Chr*_*uin 13
想象一下有三行的文件:
1
2b
c
Run Code Online (Sandbox Code Playgroud)
使用fscanf()
读取整数,第一行读取正常,但在第二行将fscanf()
离开你在'b',不知道该怎么做.您需要一些机制来移动垃圾输入以查看第三行.
如果你做一个fgets()
和sscanf()
,你能保证你的文件指针的时间,这是一个比较容易对付移动的线.通常,您仍然应该查看整个字符串以报告其中的任何奇怪字符.
我自己更喜欢后一种方法,虽然我不同意"使用它几乎总是一个坏主意fscanf()
"的说法...... fscanf()
对于大多数事情来说都是完美的.
小智 5
当您匹配字符文字时,就会出现这种情况。假设您有:
int n = fscanf(fp, "%d,%d", &i1, &i2);
Run Code Online (Sandbox Code Playgroud)
考虑两个可能的输入“ 323,A424
”和“ 323A424
”。
在这两种情况下fscanf()
都会返回 1 并且读取的下一个字符将是'A'
。无法确定逗号是否匹配。
话虽这么说,只有当找到错误的实际来源很重要时,这才重要。在知道存在格式错误的输入错误就足够的情况下,fscanf()
实际上优于编写自定义解析代码。
归档时间: |
|
查看次数: |
6367 次 |
最近记录: |