我正在尝试制作一个非常简单的转换器/压缩器;该程序应该获取一个包含 4 种不同类型的 ASCII 字符的文件,并将其作为二进制文件写入文件。该程序还应该读取二进制文件并将其转换为 ASCII 并在屏幕上打印出来。下面是我的代码,我无法真正获得 char/cstring。我必须做哪些改进才能让它发挥作用?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char compresser(char c);
char converter(char c);
int main(int argc, char **argv)
{
char *c;
FILE *If = fopen("A.txt", "r");
FILE *Uf = fopen("B.txt", "rw");
if(If == NULL || Uf == NULL) {
printf("Could not open file");
}
if(argc < 4) {
printf("Too few argument, must be 3\n");
} else if(strcmp(argv[1], "p") == 0) {
while((c = fgetc(If)) != EOF) {
printf("%c", c);
}
} else if(strcmp(argv[1], "e") == 0) {
while((c = fgetc(If)) != EOF) {
fprintf(Uf, "%c\n", compresser(c));
}
} else if(strcmp(argv[1], "d") == 0) {
while((c = fgetc(Uf)) != EOF) {
printf("%c", converter(c));
}
} else {
printf("Not a valid command\n");
}
}
char compresser(char c)
{
if(c == ' ') {
return '00';
} else if(c == ':') {
return '01';
} else if(c == '@') {
return '10';
} else if(c == '\n') {
return '11';
} else {
return 'e';
}
}
char converter(char c)
{
if(c == '00') {
return ' ';
} else if(c == '01') {
return ':';
} else if(c == '10') {
return '@';
} else if(c == '11') {
return '\n';
} else {
return 'e';
}
}