C中的哪些文件读取器可以处理读取不一致的文件?有时文件是“字号”,有时它只是“字”。像这样。
bob 456
echo
cat
dog 1101
peacock 300
这是我用fscanf尝试过的。我很惊讶它的工作原理。我不认为fscanf喜欢不一致的文件。有什么我需要担心的吗?我知道如果你不小心,fscanf会有非常糟糕的副作用。
while (fscanf(pFile, "%s %d", nam, &val) !=EOF)
{
//my work
}
答案 0 :(得分:5)
您需要仔细阅读fscanf
的文档:
成功完成后,这些函数将返回成功匹配和分配的输入项的数量;如果早期匹配失败,此数字可以为零。如果输入在第一次匹配失败或转换之前结束,则返回EOF。如果发生读错误,则设置流的错误指示符,返回EOF,并设置errno以指示错误。
我会做这样的事情:
while (TRUE) {
int matched = fscanf(pFile, "%s %d", nam, &val);
if (matched == 2) {
// nam and val are valid
} else if (matched == 1) {
// only nam was assigned
} else { // Includes EOF case
// Nothing was assigned
break;
}
}