gpt4 book ai didi

c - 在 while 循环中, fgets() 以换行符作为输入自行运行

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:47 27 4
gpt4 key购买 nike

char theInput[10];
long option;
int innerLoop = 1;
char *dunno;
while(innerLoop == 1){
printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: ");
fgets(theInput, sizeof theInput, stdin);
option = strtol(theInput, &dunno, 10);
if(option == 1){
loop = 0;
innerLoop = 0;
}else if(option == 2){
loop = 1;
outerLoop = 1;
innerLoop = 0;
firstLoop = 0;
}else if(option == 3){
loop = 1;
innerLoop = 0;
outerLoop = 1;
firstLoop = 1;
}else{
printf("\nInvalid input, please try again.\n");
innerLoop = 1;
}
}

这段代码的结果是,当第一次运行时,它会打印“Type '1' to get”部分,然后是一个换行符,然后是“Invalid input,please try again”。无需从命令行输入任何内容。然后它再次打印第一个 printf 语句,然后接受输入并开始工作。它的目的是打印第一条语句,然后等待输入。

下面是终端输出。

“输入“1”找零,输入“2”选择另一个项目,或输入“3”添加更多资金:输入错误,请重试。

输入“1”找零,输入“2”选择其他项目,或输入“3”添加更多资金:“

最佳答案

你能尝试刷新标准输出吗?

如果其他人想要一个工作示例,我已经添加了 main 方法:

#include <stdio.h>

int main () {
int loop = 0;
int outerLoop = 0;
int firstLoop = 0;

char theInput[10];
long option;
int innerLoop = 1;
char *dunno;
while(innerLoop == 1){
printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: ");
fflush(stdout);
fgets(theInput, sizeof theInput, stdin);
option = strtol(theInput, &dunno, 10);
if(option == 1) {
loop = 0;
innerLoop = 0;
}else if(option == 2){
loop = 1;
outerLoop = 1;
innerLoop = 0;
firstLoop = 0;
}else if(option == 3){
loop = 1;
innerLoop = 0;
outerLoop = 1;
firstLoop = 1;
}else{
printf("\nInvalid input, please try again.\n");
innerLoop = 1;
}
}
}

在修改你的源代码之前,你能不能尝试单独运行这个例子,看看你是否有预期的结果?

关于c - 在 while 循环中, fgets() 以换行符作为输入自行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840238/

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