解码一个文件

#include <Windows.h> #include <cstdio> const int KEY=111; void encryptStrA(char* sometext) { int length; length=strlen(sometext); for(int i=0; i<length;i++) sometext[i]^=KEY; } int main(void) { FILE* pFile=fopen("pliczek","wb"); char sign; char sampleString[]="Hello world!"; encryptStrA(sampleString); fprintf(pFile,"%c%c%s%c%c",13^KEY,10^KEY,sampleString,13^KEY,10^KEY); fclose(pFile); pFile=fopen("pliczek","rb"); while(!feof(pFile)) { fscanf(pFile,"%c",&sign); printf("%c",sign^KEY); } fclose(pFile); system("PAUSE"); return 0; } 

我回避了一些棘手的事情

  1. 文件以二进制模式打开
  2. 在encryptStrA中,strlen函数并不直接放在循环条件中

尽pipe如此,它仍然输出“地狱”,而不是“你好世界!”? 更确切地说,在发现关键字符后切断所有内容,原因是什么? 我使用的操作系统中,每一行文本以回车(ASCII 13)和换行(10)结束。

代码fprintf("%s", s); 期望s是零终止的字符串。 当到达'o'^111它会给出一个空字符,所以字符串的其余部分不会写入文件。

你可以使用fwrite来代替。