4

次のようにファイルに書き込む必要があります。

 A
 B
 C
 D
 ...

アルファベットの各文字は、ファイルの異なる行に書き込む必要があります。私は次の文字を次々に書き込むプログラムを持っています:

 FILE* fp;
 fp = fopen("file1","a+");
 int i;
 char ch= 'A';
 for(i=0; i<26; i++){
     fwrite(&ch, sizeof(char), 1, fp);
     ch++;
 }
 fclose(fp);

上記のプログラムを変更して、各文字を新しい行に書き込むにはどうすればよいですか。(各文字の後に「\ n」と書いてみましたが、VIエディターまたはghexツールを使用してファイルを表示すると、余分な文字が表示されます。viエディターが上記のようにファイルを正確に表示する方法を探しています)。

最初のfwriteの後で、次を使用してみました。

 fwrite("\n", sizeof("\n"), 1, fp);

ありがとう。

4

2 に答える 2

10
fwrite("\n", sizeof("\n"), 1, fp);

する必要があります

fwrite("\n", sizeof(char), 1, fp);

それ以外の場合は、文字列定数\0のゼロ終了の一部であるエクストラを書き込んでいます( 1ではなく2です)。"\n"sizeof("\n")

于 2012-04-21T04:21:30.113 に答える
2

どんな「余分なキャラクター」が見えますか?"a+"追加するためにファイルを開くためのパラメーターを認識しているfopenので、ファイルの最後に書き込んでいます。おそらく"w+"、ファイルを上書きするという意味ですか?

あなたが使用することができます:

fputc((int)ch, fp);
fputc((int)'\n', fp);

あるいはfprintf(fp, "%c\n", ch);

于 2012-04-21T04:22:42.353 に答える