【问题标题】:C: unknown input from userC:来自用户的未知输入
【发布时间】:2018-08-16 11:10:41
【问题描述】:

我希望从 C 中的用户那里获得输入。有两种选择: char 然后int (scanf("%c, %d", &mychar, &myint))string

我的问题是,如果我不知道用户要输入什么 - 字符串或 char/int 组合,如何检查用户输入行。谢谢!

【问题讨论】:

  • 真的有逗号,作为第二个输入字符吗?

标签: c input scanf


【解决方案1】:

输入带有fgets的字符串,然后尝试sscanf,并检查结果是否成功/失败。如果你得到2,你已经成功读取了一个字符和一个整数。如果您得到任何其他内容,sscanf 未能读取您指定的格式,因此请使用原始字符串。

您甚至可以读取格式 "%c, %d%c"(不要忘记给它一个 char 变量来读取第三个参数),以查看是否只有一个 char 和一个整数,以进行严格的错误检查: "x, 18trashtrash" 会让sscanf 返回3,而一个不错的"x, 18" 会给你2

【讨论】:

  • 但在“c, c”的情况下我不会得到 2 吗?就我而言,我没有 a ,所以如果我读到 "%c %d%c" 任何字符串输入都会得到 2,不是吗?
  • 否,因为sscanf 将拒绝读取第二个c%d;所以你得到1(正确阅读%c
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2022-01-09
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
相关资源
最近更新 更多