当前位置: 代码迷 >> C语言 >> [求助]两段代码有区别吗?
  详细解决方案

[求助]两段代码有区别吗?

热度:318   发布时间:2006-05-02 01:38:00.0
[求助]两段代码有区别吗?
while((cha=fgetc(fpa))!=EOF)
{
fputc(cha,fpb);
}

cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
有什么不同吗?有大虾知道么,呵呵
搜索更多相关的解决方案: 代码  

----------------解决方案--------------------------------------------------------
回复:(momo_2003)[求助]两段代码有区别吗?

楼主朋友,您给的两段代码没有什么区别。不过,
高手们通常喜欢第一段代码,即
while((cha=fgetc(fpa))!=EOF)
fputc(cha,fpb); //大括弧可省略
但初学者建议从这儿:
cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
开始,因为它/好理解些。
【注意】对于TURBOC 2.0请使用第二种代码。


----------------解决方案--------------------------------------------------------

但是在用程序复制*.exe的二进制文件时,用上面的方法就无法实现复制准确的复制,而下面一种代码却能够准确复制,很奇怪啊~~~~


----------------解决方案--------------------------------------------------------
能的,你把你的源程序都粘上来,我下午帮你看看
----------------解决方案--------------------------------------------------------
就是你发给我的代码,把
cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
改成我做的这个:
while((cha=fgetc(fpa))!=EOF)
{
fputc(cha,fpb);
}
其他都一样,我就纳闷为什么不能执行了~~~~崩溃中发呆。。。
----------------解决方案--------------------------------------------------------
如果用我这个则无论在TC还是VC++
都能够兼容。
while(1)
{
char ch=fgetc(fp1);
if( feof(fp1) )break;
fputc(ch,fp2);
}
原因分析:TurboC有个缺陷,即必须主动去撞击一下文件的“底部”后再测试feof()并退出循环。而不能:
while(!feof(fp1)){......}
如果你硬这样做则势必多读出1个废字符。
----------------解决方案--------------------------------------------------------
  相关解决方案