sscanf-多次使用同一变量

时间:2018-08-06 15:50:06

标签: c scanf

我正在尝试处理以下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?

1 个答案:

答案 0 :(得分:2)

来自this scanf (and family) reference

  

每个转换说明符的作用后都有一个sequence point;这允许将多个字段存储在同一“接收器”变量中。

所以这确实是定义明确的行为,并且是允许的。