当前位置: 技术问答>linux和unix
关于fgets()的异常
来源: 互联网 发布时间:2015-05-31
本文导语: 有UNIX下的C程序大致如下 char str[1024]; while(fgets(str,1024,fp)==NULL){ sleep(1); if(fgets(str,1024,fp)==NULL) { printf("the end of file!"); fclose(fp); } } fp指向的文件(通过网络传上来的)明明还有若干行...
有UNIX下的C程序大致如下
char str[1024];
while(fgets(str,1024,fp)==NULL){
sleep(1);
if(fgets(str,1024,fp)==NULL)
{
printf("the end of file!");
fclose(fp);
}
}
fp指向的文件(通过网络传上来的)明明还有若干行没读完,但却显示已经“the end of file!”
让人纳闷,这种现象每个月就两三次,但让人不解
char str[1024];
while(fgets(str,1024,fp)==NULL){
sleep(1);
if(fgets(str,1024,fp)==NULL)
{
printf("the end of file!");
fclose(fp);
}
}
fp指向的文件(通过网络传上来的)明明还有若干行没读完,但却显示已经“the end of file!”
让人纳闷,这种现象每个月就两三次,但让人不解
|
有可能是文件缓冲的问题,一边在写,另一边在读?加个fflush(fp)试试
如果是ftp,建议使用rename操作来避免这种情况。传输时加上.tmp后缀,传输结束rename回去。
如果是ftp,建议使用rename操作来避免这种情况。传输时加上.tmp后缀,传输结束rename回去。
|
传来的文件是二进制文件还是文本文件?
|
为什么不用read???
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。