请教一个编程问题,

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
linxiaoyu
帖子: 39
注册时间: 2009-05-03 21:09

请教一个编程问题,

#1

帖子 linxiaoyu » 2010-10-09 15:52

硬盘两个文件A B,A内容为“1234” B内容为“abcd”
要求用文件操作函数将AB文件内容合并,并输出到一个新文件C中,
“while (!feof(fp1)){
fputc(fgetc(fp1),fp3);
}
fclose(fp1);
while (!feof(fp2)){
fputc(fgetc(fp2),fp3);
}
fclose(fp2);
fclose(fp3);

fp1, fp2, fp3, 分别指向 A B C三个文件,
合并后C 文件内容如下
1234
*(此字符为y上面带两点)abcd
*(同上)
求解答
GONE WITH THE WIND ~~~
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请教一个编程问题,

#2

帖子 trigger » 2010-10-09 16:22

解答什么? :em20
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教一个编程问题,

#3

帖子 aerofox » 2010-10-09 17:00

原因是当 fgetc() 遇到文件结束时,没有立即退出循环,而是把 fgetc() 返回的结果写到文件中后才退出循环。
头像
linxiaoyu
帖子: 39
注册时间: 2009-05-03 21:09

Re: 请教一个编程问题,

#4

帖子 linxiaoyu » 2010-10-09 17:59

aerofox 写了:原因是当 fgetc() 遇到文件结束时,没有立即退出循环,而是把 fgetc() 返回的结果写到文件中后才退出循环。
可是,判断条件在前阿,如果fp到达文件尾,是不会在执行fgetc的把,也就是说fgetc是不会读入文件结束标志的吧
GONE WITH THE WIND ~~~
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 请教一个编程问题,

#5

帖子 tusooa » 2010-10-09 21:03

额,用shell就行了。
cat A B > C

代码: 全选

] ls -ld //
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教一个编程问题,

#6

帖子 aerofox » 2010-10-09 21:12

判断在前在后不能只看书写的位置,要看执行的顺序。
一直到读到文件最后一个字符之时,feof(fp1) 仍然返回“假”,因此刚刚读完最后一个字符后,仍然会再进入一次 while 循环,在循环内部,fgetc 会返回 EOF,fputc 再立即把这个 EOF 当作作字符写入文件,然后才遇到 while 循环的判断语句,结束循环。
回复