为什么下面的程序没有按预期打印新创建的文本文件( "E" )的第一个字符?这是一个简单的程序,我试图从各个方面来看问题,但找不到原因。文本文件正在我的 D 驱动器上创建,内容为“ EFGHI ”,但由于某种原因,即使我使用 getc()
倒带和阅读,也不会读取 “E” 并且输出为 -1 。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x;
FILE *fp;
fp=fopen("F:\\demo.txt","w");
if(fp==NULL)
puts("Write error");
fputs("EFGHI",fp);
rewind(fp);
x=getc(fp);
printf("%d",x);
fclose(fp);
}
更新:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x;
FILE *fp;
fp=fopen("F:\\demo.txt","w+");
if(fp==NULL)
{
puts("Write error");
exit(EXIT_SUCCESS);
}
fputs("EFGHI",fp);
rewind(fp);
while(!feof(fp))
{
x=getc(fp);
printf("%d\n",x);
}
fclose(fp);
}
最佳答案
文件模式 "w"
打开文件仅用于写入。
使用 "w+"
打开文件进行读写。
(有关更多文件模式,请参阅 man fopen
。)
关于 getc()
返回 -1
,从 man getc
逐字逐句:
EOF
通常等于 -1
。为了测试这个做一个 printf("EOF=%d\n", EOF);