分页: 1 / 1

请教一个编程问题,

发表于 : 2010-10-09 15:52
linxiaoyu
硬盘两个文件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
*(同上)
求解答

Re: 请教一个编程问题,

发表于 : 2010-10-09 16:22
trigger
解答什么? :em20

Re: 请教一个编程问题,

发表于 : 2010-10-09 17:00
aerofox
原因是当 fgetc() 遇到文件结束时,没有立即退出循环,而是把 fgetc() 返回的结果写到文件中后才退出循环。

Re: 请教一个编程问题,

发表于 : 2010-10-09 17:59
linxiaoyu
aerofox 写了:原因是当 fgetc() 遇到文件结束时,没有立即退出循环,而是把 fgetc() 返回的结果写到文件中后才退出循环。
可是,判断条件在前阿,如果fp到达文件尾,是不会在执行fgetc的把,也就是说fgetc是不会读入文件结束标志的吧

Re: 请教一个编程问题,

发表于 : 2010-10-09 21:03
tusooa
额,用shell就行了。
cat A B > C

Re: 请教一个编程问题,

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