为什么下面的程序没有按预期打印新创建的文本文件的第一个字符(" E" )?这是一个简单的程序,我试图从各个方面看问题,但找不到原因。正在我的D盘上使用内容" EFGHI "创建文本文件,但出于某种原因" E" 是即使我使用getc()
回放和阅读并且输出为 -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);
}
答案 0 :(得分:7)
文件模式"w"
打开文件,仅用于编写。
使用"w+"
打开文件以撰写和阅读。
(有关更多文件模式,请参阅man fopen
。)
关于getc()
返回-1
,逐字man getc
:
[...] getc() [...]返回[s]将
unsigned char
广告素材视为int
或 EOF 在文件末尾或错误。
EOF
通常等于-1
。要对此进行测试,请执行printf("EOF=%d\n", EOF);
答案 1 :(得分:4)
fp=fopen("F:\\demo.txt","w");
打开要写入的文件,然后尝试从中读取。那不行。
我还会注意到,您的程序一直在尝试使用fp
,因为if
检查fp
仅显示错误,但它不会停止该计划。