c - 解析 C 中的输入,scanf 的情况

标签 c

我有以下输入:

2
2 5
4 6
1
1 1

其中每个第一个数字编码要遵循的案例数。这在 ACM 问题中很常见。我已经尝试使用 fgetssscanf 成功完成此操作(无论如何我总是最终这样做:(,但出于好奇,有没有办法只使用scanf?如果我执行类似的操作,文件指针最终会指向哪里

scanf("%d",&x)
for (f=0;f<x;f++) {
  scanf("%d %d", &a, &b);
}

这可行吗,有没有更好的方法仅使用 scanf

最佳答案

如果输入格式正确 - 正如您对在线评委所期望的那样 - 您所拥有的模式有效。

对于示例输入和循环,直到并包括 '6' 的输入都将被消耗,而之后的换行符将被下一个 scanf 跳过打电话。

This is usuall all within a while(1) loop or something of the sort, how do I test for EOF with the first scanf?

如果您没有测试用例的计数,并且需要自己检测输入的结束,请使用 scanf 的返回值,

while(scanf("%d", &x) == 1) {
    for(f = 0; f < x; ++f) {
        scanf("%d%d", &a, &b);
        /* do something clever */
    }
 }

当转换失败时,您已到达输入末尾、输入格式错误或输入流已损坏。在这些情况下您都无法恢复。

关于c - 解析 C 中的输入,scanf 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290540/

相关文章:

c - 如何用c程序向vxworks shell写入命令

C char 数组、指针、malloc、free

c - PIC16F 上的 24 位移位

c - 在尝试编译 BluezTools 时到处都是 undefined reference ?

c - 在 Windows 上用 C 搜索文件

c - 为什么我可以用这个非法的C语句编译而没有任何错误?

c - 未调用的静态 c 函数会发生什么

c - WndProc_OnSize(HWND hWnd, UINT state, int cx, int cy) 的参数是什么

c - 数组运算符 "-"(连字符或破折号)在 C 语言中的含义和作用是什么?

c - 如果我想使用它,为什么我需要声明一个全局为 `extern`?