如何在不确定它是int还是char时从stdin获取值?

时间:2014-05-20 12:12:00

标签: c

当它可能是一个字符(在这种情况下为p或q)或者一个大于零但低于最大值的整数值时,如何获取stdin的值?

我尝试过使用%c转换字符,但发现这意味着它在第一个数字后丢失了任何东西(显然只需要一个字符)

我应该使用%i代替还是我需要以不同的方式使用它?我发现%i对于任何不是整数的东西都返回0,但这只会让我检查它是不是int而不是特定的char?

干杯

2 个答案:

答案 0 :(得分:3)

检查scanf的返回值:

if (scanf("%d", &intInput) == 0) {
    /* Nothing read. Not an integer! */
    scanf("%c", &charInput);
    /* Process char input */
} else {
    /* Process integer input */

答案 1 :(得分:0)

检查它:isaplha表示一个字符,isdigit表示一个数字。