【发布时间】:2018-08-16 11:10:41
【问题描述】:
我希望从 C 中的用户那里获得输入。有两种选择:
char 然后int (scanf("%c, %d", &mychar, &myint))
或string。
我的问题是,如果我不知道用户要输入什么 - 字符串或 char/int 组合,如何检查用户输入行。谢谢!
【问题讨论】:
-
真的有逗号
,作为第二个输入字符吗?
我希望从 C 中的用户那里获得输入。有两种选择:
char 然后int (scanf("%c, %d", &mychar, &myint))
或string。
我的问题是,如果我不知道用户要输入什么 - 字符串或 char/int 组合,如何检查用户输入行。谢谢!
【问题讨论】:
,作为第二个输入字符吗?
输入带有fgets的字符串,然后尝试sscanf,并检查结果是否成功/失败。如果你得到2,你已经成功读取了一个字符和一个整数。如果您得到任何其他内容,sscanf 未能读取您指定的格式,因此请使用原始字符串。
您甚至可以读取格式 "%c, %d%c"(不要忘记给它一个 char 变量来读取第三个参数),以查看是否只有一个 char 和一个整数,以进行严格的错误检查: "x, 18trashtrash" 会让sscanf 返回3,而一个不错的"x, 18" 会给你2。
【讨论】:
sscanf 将拒绝读取第二个c 和%d;所以你得到1(正确阅读%c)