gpt4 book ai didi

c - scanf 检查 while 循环以限制整数输入

转载 作者:行者123 更新时间:2023-12-02 04:38:32 25 4
gpt4 key购买 nike

我正在编写一段代码,要求用户输入 10 个整数,然后将这些整数反馈给他。我想创建一个“scanf check”来限制字符输入。 while 循环在不接受字符的情况下工作,但它会跳过整数输入。

int main()
{

int i = 0, number[10] = {0};
char buf[128] = {0};

for (i = 0; i < 10; i++)
{
printf("Please input number %d : ", i+1);

while(scanf("%d", &number[i]) != 1)
{
scanf("%s", &buf);
printf("Sorry, [%s] is not a number. Please input number %d : ", &buf, i);
}
}

for (i = 0; i < 10; i++)
{
printf("\n Number %d is %d", (10-i), number[9-i]);
}

return EXIT_SUCCESS;
}

最佳答案

正如 H2CO3 所指出的,不要使用 scanf,替代方法是 fgetsstrtol:

int i, number[10] = {0};
char buf[128], *p;

for (i = 0; i < 10; i++) {
printf("Please input number %d : ", i+1);
while (1) {
fgets(buf, sizeof(buf), stdin);
if ((p = strchr(buf, '\n')) != NULL) {
*p = '\0';
}
number[i] = (int)strtol(buf, &p, 10);
if (p == buf || *p != '\0') {
printf("Sorry, [%s] is not a number. Please input number %d : ", buf, i + 1);
} else {
break;
}
}
}
for (i = 0; i < 10; i++) {
printf("\n Number %d is %d", (10-i), number[9-i]);
}
return EXIT_SUCCESS;

关于c - scanf 检查 while 循环以限制整数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21401136/

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