我在ANSI C中编写命令行程序来解析Quake 2映射文件来报告使用了多少实体和纹理。我的开发机器是MacBook。我正在测试OS X Snow Leopard(32位),Windows XP(32位)和Vista(64位)以及Ubuntu 9.10(32位)。如何在程序崩溃之前检测到文本文件是否损坏?
我在Vista上发生了一个崩溃的bug,其中程序会挂上某个映射文件。花了一段时间才发现它不是程序,而是地图文件本身。我没有注意到文本文件的任何异常。重新打开并保存地图文件修复了该问题。
我的代码将整个映射文件加载到内存中,使用strtok()使用'\ n'分隔行,分析每行,并将数据加载到单链接列表中进行处理。有没有办法来检测地图(文本)文件是否损坏?
最简单的非编程解决方案是添加一个包含问题和解决方案的FAQ文件。
错误的输入不应该使程序崩溃,所以答案是“是”。至于如何,它取决于您的程序或您使用的库中的特定错误。代码崩溃的代码片段将是一个开始。当你“重新打开并保存”时,文件是否改变? – 2010-02-24 06:26:03
为什么程序崩溃? (Windows上的线路终止使用\ r \ n,在* nix上它是\ n,这可能是您的应用程序的问题吗?) – 2010-02-24 06:27:14
在我上次的编辑会话中,编辑器崩溃了,应该不会将任何数据保存到映射文件。当我加载并在编辑器中重新保存地图文件并重新编译游戏文件时,它工作正常。地图文件有些不同,但我不确定是什么。我不认为“\ r \ n”与“\ n”是一个问题。该程序运行良好,直到遇到此文件。 – 2010-02-24 06:43:11