说我有
[房间数]
[房间名称] [item1的数量] [item2的数量]
...
[门的数量]
[房间名称] [L|R|U|D] [房间名称]
...
[开始房间] [退出房间]
[移动1]
[移动2]
....
假设我正在使用 scanf,
scanf(" %d", &roomCount);
scanf(" %s %d %d", room_name, &item1No, &item2No);
等...
我如何验证用户输入的内容是否正确?
谢谢
最佳答案
使用 scanf
几乎总是一个坏主意:它不区分换行符和其他空格,这使得无论您尝试解析什么都不知道您在哪里.可能更好:使用 fgets
读取行并将每一行提供给 sscanf
,检查返回值以确保您得到了您要查找的内容。或者,使用实际的解析器:使用像 flex
这样的解析器生成器制作您自己的解析器,或者使用某种 XML 作为您的数据格式并使用 XML 解析器,等等。
设计您的数据格式可能是明智的,这样就很难在不注意的情况下不同步地进行解析,并使数据的结构对人类读者来说更加明显。
关于C: Scanf 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570231/