gpt4 book ai didi

从客户端获取 int 数字的 C 简单程序

转载 作者:行者123 更新时间:2023-11-30 18:21:54 24 4
gpt4 key购买 nike

我是 C 语言新手。我想创建一个获取 2 int 并打印它们的总和的应用程序。我尝试使用 while 从客户端获取 int 数字,但我得到了无限的 while 循环。

int main()
{
//printf("Hello world!\n");

int x = 0, y = 0;
printf("Insert 2 numvers \n");

int status = scanf("%d", &x);
while (status == 0) {
printf("Error occured. Enter new number: \n");
status = scanf("%d", &x);
}

scanf("%d", &y);

printf("The sum is: %d", x + y);
return 0;
}

输出(我没有插入另一个数字的选项):

Insert new number: 
ascsac -> input
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
Error occured. Enter new number:
(Endless loop).

最佳答案

如前所述,scanf 失败时会将输入保留在 stdin 中,循环中的下一个 scanf 将读取该输入并再次失败,导致无限循环。

可以使用一个旧的解决方案 -

 int c;
int status = scanf("%d", &x);
while (status == 0) {
while((c=getchar())!=EOF && c!='\n'); //clear stdin before next scanf
if(c==EOF) break;
printf("Error occured. Enter new number: \n");
status = scanf("%d", &x);
}

关于从客户端获取 int 数字的 C 简单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368668/

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