[问题] 大量产生档案时,只会产生一部分就停住了

楼主: xucin (vegetable)   2015-02-25 11:45:05
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEVC++
问题(Question):
我要把很多个txt档案更改内容后输出。一开始程式run得很顺
没有任何错误,档案成功产出。但是大概做到几百个以后他就不会产出档案
黑窗正常在跑程式没有任何bug 想请问为什么会这样
喂入的资料(Input):
*.txt
预期的正确结果(Expected Output):
*.txt.data
错误结果(Wrong Output):
黑窗没有错误没有显示bug
但是档案没有成功产出
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/ebBNNm
补充说明(Supplement):
这是一个很大的资料夹每个资料夹内又有资料夹
一个while循环跑1层
跑到底之后取得.txt档后转档产出.data档案
大概只会跑出约100~200个档案以后他就停住了
黑窗看起来很正常。找不出原因
希望有人可以指引拜托了
作者: Killercat (杀人猫™)   2015-02-25 13:53:00
是不是被\0卡住....或者档案里面有被误认成eof的东西?
楼主: xucin (vegetable)   2015-02-25 14:22:00
没有\0的话 阵列会被塞爆 档案的格式都一样 应该不会EOF
作者: Killercat (杀人猫™)   2015-02-25 14:22:00
我猜是你用字串方法去处理内容 所以\0会在意外的地方终止,你开档改用binary而且在处理的时候避免用字串处里看看,应该就没问题了
楼主: xucin (vegetable)   2015-02-25 16:15:00
有什么办法不用字串去处理内容吗
作者: Killercat (杀人猫™)   2015-02-25 16:50:00
避免使用strtok, strlen等宣告在string.h里面的东西string.h里面基本上都是认定\0是处理终点的我做法比较极端,我不用char*用vector<unsigned char>来当作buffer,不过你最好还是先确定一下是不是卡\0strlen拿来处理binary我想应该不少人中枪过
作者: OPIV (Monitor)   2015-02-25 20:50:00
有 fclose() 吗?
作者: zetab   2015-02-25 22:11:00
free(result); <- 这里错了
楼主: xucin (vegetable)   2015-02-27 14:41:00
OPIV 有呀OPIV 对! 我找到了 我少关掉一个result 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com