你这个代码比较乱,是不是要把若干文件串接到目标文件中呀?初步看,问题跟"a+"模式很有关系,EOF未必存在于这种文件中,乱码在后面是不是?写到最后确定要终结时,记得补写一个EOF符号上去,确保安全,除非你不用EOF来检测文件结束。带+更新标志的文件读写,告一段落最好刷新一下缓冲区,比如你追加完一个文件,就强制写盘一次,到最后要显示ft,既然不想关闭文件再打开,就更要刷新一次缓存。这些保险措施,多写上去不会坏的,因为你未必知道那些库函数到底有做什么、没做什么,自己打保险好过依赖库函数的细节,要么你去仔细查过库函数参考手册这些函数的具体操作。
另外,你这种在循环中读文件名又检测打开是否失败的手段,最好戒了。你自己看,在后面的循环中,打开源文件失败exit()中断程序,原先打开了的ft没关闭被退出程序,那么那些数据会怎样?
写程序时,每一步都确保成功措施、调试过真的没问题,再进入下一步代码的编写。多个文件追加到同一个文件末尾,这样一气写下去,不如写一个关闭一个,反复打开和关闭,一个成功是一个,胜于半途某个不成功导致前功尽弃。你现在这样,到底哪出问题,最终还是要隔离各个步骤来排查,有什么区别呢。
[ 本帖最后由 TonyDeng 于 2011-12-26 18:17 编辑 ]
另外,你这种在循环中读文件名又检测打开是否失败的手段,最好戒了。你自己看,在后面的循环中,打开源文件失败exit()中断程序,原先打开了的ft没关闭被退出程序,那么那些数据会怎样?
写程序时,每一步都确保成功措施、调试过真的没问题,再进入下一步代码的编写。多个文件追加到同一个文件末尾,这样一气写下去,不如写一个关闭一个,反复打开和关闭,一个成功是一个,胜于半途某个不成功导致前功尽弃。你现在这样,到底哪出问题,最终还是要隔离各个步骤来排查,有什么区别呢。
[ 本帖最后由 TonyDeng 于 2011-12-26 18:17 编辑 ]
授人以渔,不授人以鱼。