我正在尝试处理以下2条命令的用户输入:
quit
open <n>
其中是整数。
现在,我的解决方法是:
char input_string[10];
int n;
int trail_index;
//<user input here>
sscanf(input_string, "%s%n %d%n", command, &trail_index, &n, &trail_index);
为我正确地分配了trace_index(在quit命令的情况下为4,在“ open 1”的情况下为6),但是由于该程序可能与不同的编译器和平台一起使用,因此问题是:sscanf的行为是保证多次使用同一个变量时会以这种方式工作,还是这种未定义的行为恰好适用于Visual C?
答案 0 :(得分:2)
来自this scanf
(and family) reference
每个转换说明符的作用后都有一个sequence point;这允许将多个字段存储在同一“接收器”变量中。
所以这确实是定义明确的行为,并且是允许的。