我在进行C编程练习时遇到了麻烦。我需要使用getchar() - 方法而不是scanf()。当我使用scanf时,当我输入例如7时,一切都很完美。但是当我使用getchar()并输入7时,我将得到7的ASCII码,而不是int 7.如何解决这个问题? / p>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
printf("Voer een getal in:\n");
fflush(stdout);
i = getchar();
//scanf("%d", &i);
if (i > -1000 && i < +1000) {
printf("het ingevoerde getal is: %d\n", i);
} else {
printf("foutieve invoer\n");
}
return EXIT_SUCCESS;
}
答案 0 :(得分:5)
这是getchar
的正确行为。虽然scanf
&#39; %d
格式说明符会将数字序列转换为十进制数,但需要getchar
,您需要自己执行此操作。
为了做到这一点,你需要知道三件事:
以下是答案:
当getchar
返回的值不数字时,您可以决定结束字符输入。您可以使用isdigit
函数(包含<ctype.h>
标题来使用它)。
您可以通过从'0'
getchar
),将单个数字字符转换为相应的数字值
您可以将多个数字组合成一个数字,方法是将零部分结果设为零,然后将其乘以10,然后将下一个数字的值加到该数字上。
int num = 0;
for (;;) {
int ch = getchar();
if (!isdigit(ch)) break;
num = 10 * num + (ch - '0');
}