【问题标题】:C - scanf string with optional intC - 带有可选 int 的 scanf 字符串
【发布时间】:2017-04-15 19:39:37
【问题描述】:

我正在做一个项目,但我似乎不知道如何读取一个并不总是存在的 int 字符串。

例如: 我有 2 个变量

int argument = 0;
char instruction[16];

输入是:

"string" 57

我想在指令中加入“字符串”,在参数中加入 57。这是我可以做到的

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

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

"string"

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

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

谢谢

【问题讨论】:

    标签: c string input scanf stdin


    【解决方案1】:

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

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

    【讨论】:

    • 您好,您能否详细说明如何尝试使用 'sscanf' 进行解析?谢谢
    • @TomášHorecký 手册页是下一站。但请记住,scanfsscanf 函数族都返回一个值:成功扫描的项目数。如果没有足够的项目,scanf 将停止,但 sscanf 不会。
    • @WeatherVane 谢谢,我完全没有意识到函数返回了一个值。我试图快速将一些东西放在一起,到目前为止它似乎正在工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多