C - 带有可选 int 的 scanf 字符串

C - scanf string with optional int

我正在做一个项目,但我似乎无法找到一种方法来读取带有并不总是存在的 int 的字符串。

例如: 我有 2 个变量

int argument = 0;
char instruction[16];

输入是:

"string" 57

我想在指令中输入 "string",在参数中输入 57。这个我可以用

scanf("%s %d", instruction, &argument);

问题是输入可以没有数字,即

"string"

然后我想把 "string" 放在指令中并让参数等于 0。 但是程序在 "string" 之后需要一个数字,并且在得到它之前不会继续。

当我可以有 2 种不同类型的输入时,如何从标准输入读取输入?我尝试了几种解决方案,但其中 none 有效。

谢谢

您可以通过不尝试直接解析标准输入来做到这一点。而你

  1. fgets读取一行输入。
  2. 尝试将该行解析为整数(可能使用 sscanf):
    • 如果你成功了,你就有了你的整数。
    • 否则你有原始字符串。