相关疑难解决方法(0)

`sscanf`保证不会改变它找不到的参数吗?

我有一个案例,我不确定我是否会得到足够的输入sscanf.我可以安全地假设sscanf不会弄乱它找不到的任何争论吗?

例如,在此程序中:

#include <stdio.h>

int main(int argc, char** argv) {
    int a = 0, b = 0, c = 0;
    sscanf("1 2", "%d %d %d", &a, &b, &c);
    printf("%d %d %d\n", a, b, c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

1 2 0

所以,它读了三个数字中的两个,并没有弄乱最后一个.在这种情况下,我是否可以安全地假设所有编译器和标准库也将仅留下最后一个参数,或者我是否需要执行以下操作:

int main(int argc, char** argv) {
    int a = 0, b = 0, c = 0;
    if (sscanf("1 2", "%d %d %d", &a, &b, &c) != 3) {
        c = 0;
    }
    printf("%d %d …
Run Code Online (Sandbox Code Playgroud)

c scanf

5
推荐指数
1
解决办法
1027
查看次数

标签 统计

c ×1

scanf ×1