gpt4 book ai didi

c - fgets 不会停止读取用户输入

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

我在 reddit 上发现了一些关于制作一个程序来总结所有 DnD 骰子的挑战。抛出次数是无限的,因此我创建了这个 while 循环。

我使用 fgets 输入字符串,(我不能只输入整数,因为输入例如是 1d3,其中 1 是掷出的骰子数,3 是掷出的骰子面数。)

当提示用户输入骰子时,fgets 永远不会停止读取用户输入。

例如:

To end inputting dice type 0
1d3
1d4
1d5
0
0
^C

主要功能:

int main(void)
{
char input[MAXSIZE];
int sum = 0;
printf("To end inputting dice type 0\n");
while(*(input) != 0);
{
fgets(input, sizeof(input), stdin);
printf("Debug: input = ");
puts(input);
printf("\n");
sum += dice(input);
printf("Debug: sum = %d\n", sum);
}
printf("Sum of dice rolls is %d.", sum);
return 0;
}

最佳答案

首先,字符输入0的字面值不是0。在 ASCII ,它是 48(十进制)。

尝试

 while(*(input) != '0')  // (1) - use the character literal form
// (2) remove the ;

也就是说,standard output is usually line buffered .如果要在终端中查看输出,则需要强制刷新。您可以通过以下任一方式做到这一点

  • 添加换行符

     printf("Debug: input = \n");
  • 使用fflush(stdout)

关于c - fgets 不会停止读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51361729/

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