请问c语言存取数据问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:16:19
我用c编写程序,将数据写入文件,随后用另一个程序读取该文件中的数据,却不能读取,经测试显示该文件长度为0。而当我把文件用记事本打开,人工的稍加修改(如添个空格,写个回车等)点击保存后,程序才可以读取,这是怎么回事,如何改。请指教。谢谢!
我是刚接触c,请不要见笑。下面是存数据是的一段
for(……)
{FILE *file=fopen("result.txt","a");
char s[4];
s[0]=0;
s[1]=0;
s[2]=0;
s[3]=0;
sprintf(s, "%d", dx);
fwrite(s,1,4,file);
s[0]=0;
s[1]=0;
s[2]=0;
s[3]=0;
sprintf(s, "%d", dy);
fwrite(s,1,4,file);
fwrite("\n",1,strlen("\n"),file);
fclose(file);}
下面是取数据的一段
fp=fopen("result.txt","r");
if (fp==NULL) return 0;
while(……)
{
fscanf(fp,"%lg",&x);
fscanf(fp,"%lg",&y);
a[i++][0]=x;
a[i++][1]=y;
}
fclose(fp);
谢谢

对于你的代码,有一点别的看法.你就这么写完文件,然后立刻读文件.我觉得读不出来数据很正常.由于对于数据的读写是依靠数据流,而这个数据流是依靠缓冲的.就是你完成的写操作,但不能说就立即写到文件中,而是先在一个缓冲区中聚集为一块,然后异步地以块为单位传送到文件。类似地,从一个
流读出的字符也不是一个一个地从文件中读出的,而是以块为单位从文件中读出的。这种处理方式称为缓冲。

采用缓冲的目的是为了减少调用低级I/O函数read和write的次数,因为这些真正读写文件的函数是系统调用,它们是十分费时的操作。

我只会用C++的数据流