我一直在寻找一种方法来获取 2 个整数,用空格分隔,它们位于我要读取的文件的第一行。我考虑过使用
fscanf(file, "%d %d\n", &wide, &high);
但是读取文件中任意位置的 2 个整数,如果第一行的格式错误,则会给出错误的输出。我也试过使用
字符行[1001];
fgets(行, 1000, 文件);
这似乎是最好的选择,除了它是多么笨拙。它给我留下了一个包含多达几百个空格的字符串,我必须从中提取我宝贵的整数,更不用说检查格式错误了。
肯定有比这更好的选择吗?我会接受任何解决方案,但最可靠的解决方案(对我而言)似乎是仅在第一行的 fscanf
。有什么办法吗?
最佳答案
您可以捕获紧跟在 char
中第二个数字之后的字符,并检查捕获的字符是否为 '\n'
,如下所示:
int wide, high;
char c;
if (fscanf(file, "%d%d%c", &wide, &high, &c) != 3 || c != '\n') {
printf("Incorrect file format: expected two ints followed by a newline.");
}
这是一个demo on ideone .
关于c - 一种仅在第一行进行 fscanf 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079894/