gpt4 book ai didi

c - 使用 getchar() 而不是 scanf() 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:46 25 4
gpt4 key购买 nike

我在为 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;
}

最佳答案

这是 getchar 的正确行为.同时 scanf%d格式说明符将数字序列转换为十进制数,使用 getchar你需要自己做。

为此,您需要了解三件事:

  1. 当数字序列结束时,
  2. 如何将数字的 ASCII 码转换为数字,以及
  3. 如何将多个数字组合成一个数字。

答案如下:

getchar返回值时,您可以决定结束字符输入不是一个数字。您可以使用 isdigit函数(包含 <ctype.h> header 以使用它)。

您可以通过从 '0' 返回的值中减去零代码(即 getchar ),将单个数字字符转换为其对应的数值。

您可以将多个数字组合成一个数字,方法是从零开始部分结果,然后将其乘以十,然后将下一个数字的值添加到它。

int num = 0;
for (;;) {
int ch = getchar();
if (!isdigit(ch)) break;
num = 10 * num + (ch - '0');
}

关于c - 使用 getchar() 而不是 scanf() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com