求助 linux下feof的问题

求助 linux下feof的问题,第1张

Windows 的 VC++ 已经超出 ANSI C 的标准范畴。所以所谓的 C++ 标准对于微软的产品没有任何意义。

所以,楼主你就当 VC++ 和 Linux 下的 C 是两个语言就行了……

他们之间有很多不不通用的地方,这也是为什么 Linux 下面往 Windows 移植程序,都用 gcc 环境编译。而没人喜欢用 VC 。

------------

gcc 前端时间加强了语法检查,很多旧版本能用的代码现在都需要符合 gcc 语法规范才行,而且 gcc 的 Windows 移植应该还叫 gcc 才对。本来 gcc 就是多平台的……

起码你的代码有一个漏洞:第一次进入while时,!feof(pipe)是在判断谁?说明你对feof()这个函数并没有掌握,它必须在逻辑上“紧跟”在读文件动作之后才能正确生效,这第一次是“紧跟”在哪个读动作之后?到了文件结尾处就更可笑了:经while(!feof(pipe))判断文件还没有结束,比如说文件中还剩一个最后的'\n',可是体中的if(fread(&c,1,1,pipe)==1)中的fread函数还能读到什么?细节我就不说了,太长。建议把

while(!feof(pipe)){

if(fread(&c,1,1,pipe)==1){

result[i++]=c

if(c==0)

break

}

}

这一段改成

while(fread(&c,1,1,pipe),!feof(pipe)){

result[i++]=c

//if(c==0)//这两句考虑一下吧,文件中有0吗?不可能有0,所以逻辑就有问题,建议删除

//break

}

一试。

#include

void

FileCopy()

{

FILE

*oldfile,

*newfile

oldfile

=

fopen("oldfilename",

"r")//打开源文件

newfile

=

fopen("newfile",

"w")//打开目标文件

if(!oldfile

&&

!newfile)//打开成功

{

byte

buff

while(!feof(oldfile))

{//从源文件读取一个字节,并写到目标文件

fread(&buff1,

1,

1,

oldfile)

fwrite(&buff1,

1,

1,

newfile)

}

}

if(oldfile)

fclose(oldfile)

if(newfile)

fclose(newfile)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/7124861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存