我有一个案例,我不确定我是否能获得足够的输入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;
}
输出是:
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 %d\n", a, b, c);
return 0;
}