我正在学习用C编程,现在我的作业是这样的。我应该能够获取带有单词/字母的文本文件,并且我的程序应该打印它得到的字母的 ascii 代码+1。它正在“编码”它。例如,字母“A”将打印为 066。所以我的问题是程序还需要能够将这些 ascii 代码解码回字母,但我不知道如何让我的程序读取 3 个数字一次。我用了
c = fgetc(pF);
while (c != EOF) {
fprintf(pF2,"%03i",c+1);
c = fgetc(pF);
一次读取一个字符的文件。我应该使用类似的东西来获得我需要的 3 个数字,还是完全不同的东西?
#include "stdio.h"
#include "stdlib.h"
int encode(){
char * fName = "testR.txt";
char * fName2="testW.txt";
FILE * pF;
FILE * pF2;
char c, cArray[500];
int i=0;
pF = fopen(fName, "r");
if ( pF == NULL ) {
printf("Error: The specified file could not be opened.\n");
return -1;
}
pF2 = fopen(fName2, "w");
c = fgetc(pF);
while (c != EOF) {
fprintf(pF2,"%03i",c+1);
c = fgetc(pF);
}
fclose(pF);
fclose(pF2);
return;
}
char decode(){
char * fName = "testW.txt";
char * fName2="testW2.txt";
char * buf;
FILE * pF;
FILE * pF2;
char cArray[500];
char buffer[4];
buffer[3] = '\0';
pF = fopen(fName, "r");
if ( pF == NULL ) {
printf("Error: The specified file could not be opened.\n");
return -1;
}
pF2 = fopen(fName2, "w");
while (fread(buffer, 3, 1, stdin)){
putchar((atoi(buffer)-1) & 0xFF);
}
fclose(pF);
fclose(pF2);
}
int main (int argc, char *argv[]){
char c;
if ( argc != 2 ) {
printf("Incorrect number of arguments.\n");
exit(-1);
}
if (strcmp(argv[1], "-e") == 0){
encode();
}
if (strcmp(argv[1], "-d") == 0){
decode();
}
return 0;
}
我知道我的代码是一团糟,而且我一直在尝试进行的所有更改可能不应该存在= [