我遇到getchar()
功能问题。如何区分用户是否输入大于10的数字?我使用int temp = value-'0';
转换0到9 ASCII
之间的任何数字。如果输入10,则返回49(ascii为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;
}