我正在用 ANSI C 编写一个命令行程序来解析 Quake 2 地图文件,以报告正在使用多少实体和纹理。我的开发机器是 MacBook。我正在 OS X Snow Leopard(32 位)、Windows XP(32 位)和 Vista(64 位)以及 Ubuntu 9.10(32 位)上进行测试。
我在 Vista 上遇到了一个崩溃的错误,程序会与某个地图文件一起挂起。花了一段时间才发现不是程序而是地图文件本身。我没有注意到文本文件有任何异常。重新打开并保存地图文件修复了该问题。
我的代码将整个地图文件加载到内存中,使用 strtok() 使用 '\n' 分隔行,解析每一行,并将数据加载到单链接列表中进行处理。有没有办法检测地图(文本)文件是否损坏?
最简单的非编程解决方案是添加包含问题和解决方案的常见问题解答文件。