读书人

fscanf读入数据为空咋回事

发布时间: 2012-09-25 09:55:58 作者: rapoo

fscanf读入数据为空怎么回事
[code=C/C++][/code]#include <stdio.h>

int main()
{
int x,i,a,b,c;
FILE *myfile;
a=1;b=2;c=3;

//注意要在程序同一个目录下新建一个 1.txt ,里面有少于 MAX_N 个数据,
//如只有3个数据: 1 2 3


if((myfile=fopen("1.txt","w+"))==NULL)
fprintf(myfile,"%D %D %D",a,b,c);

for(i=1;i<=6;i++)
{
fscanf(myfile,"%d\n",&x);printf("%d\n",x);
}
return 0;
}
运行结果如下
-858993460
fscanf读入数据为空是怎么回事??

[解决办法]
有两个错误:1.
if((myfile=fopen("1.txt","w+"))==NULL)
fprintf(myfile,"%D %D %D",a,b,c);
这句是如果无法打开文件,则向文件写入内容,所以打开文件成功时并未写入文件
改一下:
if((myfile=fopen("1.txt","w+"))==NULL)
{
printf("Ops!Cann't open file!\n");
exit(0);
}
fprintf(myfile,"%D %D %D",a,b,c);

2.for语句前加上:fseek(myfile,0,0);将文件指针指向文件头部。如果写入文件成功,则从文件头读取。
还有,如果以"w+"方式打开文件,是不需要事先新建的。希望帮到你。

读书人网 >C语言

热点推荐