0
#include <stdio.h>
#include <string.h>
#include <cstdlib>

const int KEY=118;

int main()
{
    FILE* hOFile = fopen("file1","w");
    FILE* hIFile;
    char sign;

    for(int i=254; i>=0; i--)
    fprintf(hOFile,"%c",i);

    fclose(hOFile);

    hIFile = fopen("file1","r");
    hOFile = fopen("file2","w");

    for(int i=254; i>=0; i--)
    {   
        fscanf(hIFile,"%c",&sign);
        fprintf(hOFile,"%c",(sign^KEY));
    }

    fclose(hIFile);
    fclose(hOFile);

    hIFile=fopen("file2","r");
    hOFile=fopen("file3","w");

    for(int i=254; i>=0; i--)
    {
        fscanf(hIFile,"%c",&sign);
        fprintf(hOFile,"%c",(sign^KEY));
    }

    fclose(hIFile);
    fclose(hOFile);
}

file3はfile1と同じであるという意味です。残念ながら、file3はASCII KEY-9文字の後にクラッシュします。具体的には、この例では次のようになります。

ファイル1:

ţツィュリオシャル÷ÖőÓóóμîíěéquthçäâáŕßţ託úű×Öő×ÖőÓÓñomyéquth名ĺ鑑いる„、€〜} | {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA @?> = <;: 9876543210 / .-、+ *)('&%$# "!

File3:

ţツィュリオシャル÷ÖőÓóóμîíěéquthçäâáŕßţ託úű×Öő×ÖőÓÓñomyéquth名ĺ鑑いる„、€〜} | {zyxwvutsrqponmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

4

1 に答える 1

3

読み取りバイナリモード(rb、ではなくr)と書き込みバイナリモード(wb、だけでなく)でファイルを開くw必要があります。そうしないと、システムは不要な変換を実行しようとします。

于 2012-05-01T16:00:19.047 に答える