c语言文件问题.高手帮忙看看!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:00:12
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int p;
FILE *fp;
if ((fp=fopen("c:\\Exam.dat","w"))==NULL)
{ printf ("open file error!");
exit(1);
}
do
{
scanf ("%d",&p);
fprintf(fp,"%d",p);
}while (p!=0);
fclose(fp);
if ((fp=fopen("c:\\Exam.dat","r"))==NULL)
{
printf ("open file error!");
exit(1);
}
do
{
fscanf (fp,"%d",&p);
printf ("%6d\t",p);
}
while (p!=0);
fclose(fp);
system("pause");
return (0);
}
后一个循环是死循环.如果把后面while后的p!=0改为p==0,程序正常了,但似乎和语法向悖,高手帮忙看看.用的是dev c++.

fprintf(fp,"%d",p);

写入文件 的数据之间没有适当的分隔,所以写入文件的数据在下次读取时会当成一个数字,而这个数字很可能已经越界,所以会导致读取出错。

不会

fprintf(fp,"%d",p); 改为fprintf(fp,"%d ",p);