我在进行C编程练习时遇到了麻烦.我需要使用getchar() - 方法而不是scanf().当我使用scanf时,当我输入例如7时,一切都很完美.但是当我使用getchar()并输入7时,我将得到7的ASCII码,而不是int 7.如何解决这个问题?
#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;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的行为getchar.虽然scanf的%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');
}
Run Code Online (Sandbox Code Playgroud)