我正在嘗試編寫一個程序,將行號添加到已存在的txt文件中。C中fopen和fprintf沒有按預期工作?
例如,如果該文件是當前:
Hello
this is
an
exercise
然後運行該代碼之後,這將是:
(1) Hello
(2) this is
(3) an
(4) exercise
我寫了這個代碼:
#include<stdio.h>
#include<conio.h>
FILE *fp;
void main()
{
int counter=1;
char newline;
fp=fopen("G:\\name.txt","r+");
if(fp==NULL)
printf("Failed to open file!");
fprintf(fp,"(%d)",counter);
newline=fgetc(fp);
while(newline!=EOF)
{
if(newline=='\n')
{
counter++;
fprintf(fp,"(%d)",counter);
}
newline=fgetc(fp);
}
printf("All done!");
getch();
fclose(fp);
}
而且輸出很奇怪。
首先,它不打印在文件的開頭。出於某種原因,它從文件的末尾開始。而另一個奇怪的事情是,只有第一次印刷成功。
的while
循環中的那些都是胡言亂語(看起來像小圓點,都不會像數字)
當我使用「R +」則fopen內,整個數據被刪除,和所有我能看看是(1)然後亂碼。
如果我在fopen中使用「a +」,它會從文件末尾開始,然後寫入(1)和亂碼。
不是你的主要問題,但'fgetc'返回'int',使用'newline'作爲'char'會給你帶來意想不到的結果。 –