getchar()遇到麻烦

时间:2014-09-12 01:29:57

标签: c getchar

我遇到getchar()功能问题。如何区分用户是否输入大于10的数字?我使用int temp = value-'0';转换0到9 ASCII之间的任何数字。如果输入10,则返回49(ascii为1)。帮助赞赏!

1 个答案:

答案 0 :(得分:3)

getchar()函数只为您提供一个字符(或文件结尾指示符),因此您永远不会获得10,您将获得{{1}然后1

如果您想输入行,会查看0或找到像this one这样的安全输入函数。

然后,您可以使用fgets()sscanf()atoi()等函数将该行处理为更合适的格式,包括错误检查。


如果您必须使用strtol(),那么维护累加器并计算运行值只是一件简单的事情:

getchar()

该程序的示例运行如下:

#include <stdio.h>
#include <ctype.h>

int main (void) {
    int ch, accum = 0;
    printf ("Enter your number (non-numerics will cease evaluation): ");
    while ((ch = getchar()) != EOF) {
        if (!isdigit (ch)) break;
        accum = accum * 10 + ch - '0';
        printf ("ch = %c, accum = %d\n", ch, accum);
    }
    return 0;
}