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

时间:2017-04-15 19:39:37

标签: c string input scanf stdin

我正在研究一个项目,我似乎无法弄清楚如何读取一个并不总是存在的int的字符串。

例如: 我有2个变量

int argument = 0;
char instruction[16];

输入是:

"string" 57

我想把“字符串”放在指令中,把57放在参数中。我可以用

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

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

"string"

然后我想把“string”放在指令中,让参数等于0。 但该程序需要一个“字符串”之后的数字,并且在获得它之前不会继续。

当我有两种不同类型的输入时,如何从stdin读取输入?我尝试了几种解决方案,但都没有。

谢谢

1 个答案:

答案 0 :(得分:5)

您不要尝试直接解析标准输入。相反,你

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