首页 > 解决方案 > sscanf - 多次使用相同的变量

问题描述

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

为我正确分配了 trail_index(4 在退出命令的情况下,6 在“打开 1”的情况下),但由于该程序可能与不同的编译器和平台一起使用,问题是:sscanf 的行为是否保证工作当您多次使用同一个变量时,这种方式,或者这种未定义的行为恰好适用于 Visual C?

标签: cscanf

解决方案


这个scanf(和家庭)参考

每个转换说明符的动作之后都有一个序列点;这允许在同一个“接收器”变量中存储多个字段。

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


推荐阅读