gpt4 book ai didi

c - 如何只扫描整数?

转载 作者:行者123 更新时间:2023-11-30 16:10:15 24 4
gpt4 key购买 nike

我希望代码一直运行,直到用户输入整数值。

该代码适用于 charchar 数组。

我已完成以下操作:

#include <stdio.h>

int main()
{
int n;
printf("Please enter an integer: ");
while(scanf("%d",&n) != 1)
{
printf("Please enter an integer: ");
while(getchar() != '\n');
}
printf("You entered: %d\n",n);
return 0;
}

问题是如果用户输入浮点值scanf会接受它。

Please enter an integer: abcd
Please enter an integer: a
Please enter an integer: 5.9
You entered: 5

如何避免这种情况?

最佳答案

  1. 您使用scanf()
  2. 你把它扔进垃圾桶。
  3. 您可以使用 fgets() 来获取整行。
  4. 您使用 strtol() 将行解析为整数,检查它是否消耗了整行。
char *end;
char buf[LINE_MAX];

do {
if (!fgets(buf, sizeof buf, stdin))
break;

// remove \n
buf[strlen(buf) - 1] = 0;

int n = strtol(buf, &end, 10);
} while (end != buf + strlen(buf));

关于c - 如何只扫描整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58923185/

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