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零终止的一部分(是两个,而不是一个)。"\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 回答