【发布时间】:2021-10-15 22:04:46
【问题描述】:
为什么这两种情况都匹配?
#include <stdio.h>
void main(void) {
int n; char S[256];
n=sscanf("A_BB_CCC_123.YES", "%[^.].YES", S);
printf("n:%d, %s\n", n, S);
*S='\0';
n=sscanf("A_BB_CCC_123.NO", "%[^.].YES", S);
printf("n:%d, %s\n", n, S);
}
$ gcc tscanf.c && ./a.out
n:1, A_BB_CCC_123
n:1, A_BB_CCC_123
在第二种情况下不应该是 n:0 吗?如果它匹配 S 到 '.'然后忽略其余的,如何区分结局?
【问题讨论】:
-
用
int返回类型声明main,而不是void。