当前位置: 技术问答>linux和unix
关于c的输入输出的问题
来源: 互联网 发布时间:2017-01-02
本文导语: #include int main() { FILE * fp; if((fp = fopen ("tmp","w+")) == NULL) { perror("open1 error"); return; } char * string ="testing message"...
#include
int main()
{
FILE * fp;
if((fp = fopen ("tmp","w+")) == NULL)
{
perror("open1 error");
return;
}
char * string ="testing message";
if(fputs(string,fp) == EOF)
{
perror("fputs error");
return;
}
close (fp);
FILE * fs;
if((fs = fopen("tmp","r")) == NULL)
{
perror("open2 error");
return;
}
char a[20];
while(fgets(a,20,fs) != NULL)
{
printf("%sn",a);
}
close(fs);
}
以上是我写的一个测试输入输出的小程序,为何写的时候成功,读的时候读不到数据呢?如果把写注释掉,那么,读也能成功。猜测可能是当文件被写的时候,不让读?但是如果是这样的话,已经close了为什么还会有影响呢。
int main()
{
FILE * fp;
if((fp = fopen ("tmp","w+")) == NULL)
{
perror("open1 error");
return;
}
char * string ="testing message";
if(fputs(string,fp) == EOF)
{
perror("fputs error");
return;
}
close (fp);
FILE * fs;
if((fs = fopen("tmp","r")) == NULL)
{
perror("open2 error");
return;
}
char a[20];
while(fgets(a,20,fs) != NULL)
{
printf("%sn",a);
}
close(fs);
}
以上是我写的一个测试输入输出的小程序,为何写的时候成功,读的时候读不到数据呢?如果把写注释掉,那么,读也能成功。猜测可能是当文件被写的时候,不让读?但是如果是这样的话,已经close了为什么还会有影响呢。
|
楼主,你用fopen打开的文件,确实是应该用fclose(fs)来关闭文件