#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;
}
私はいくつかのトリッキーなことを回避しました
- ファイルはバイナリモードで開かれます
- encodeStrAでは、strlen関数はループ状態に直接配置されません
それにもかかわらず、「HelloWorld!」ではなく「Hell」を出力しているのですか?より正確には、キーキャラクターを見つけた後にすべてをカットします。理由は何ですか?テキストのすべての行がキャリッジリターン(ASCII 13)とラインフィード(10)で終了するOSを使用しています。