非常に簡単なコンバーター/コンプレッサーを作ろうとしています。プログラムは、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';
}
}