gpt4 book ai didi

C getchar() 奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 17:29:41 25 4
gpt4 key购买 nike

所以我测试了一些东西,我注意到使用下面的代码如果用户输入是 Y/y 它不会退出循环(我再次调用 getchar() 以摆脱\n 在队列中,以便为用户的下一个输入做好准备):

#include <stdio.h>
#include <stdbool.h>

int main(int argc, char* argv[]) {
for(int i = 0; i < argc; i++)
printf("argv[%d] = %s\n", i, argv[i]);
char name[20];
printf("What's your name ? ");
gets(name);
char lastname[20];
printf("%s what's your last name ? ", name);
fgets(lastname, 20, stdin);
int age;
printf("%s %s what's your age? ", name, lastname);
scanf("%d", &age);
bool exit = false;
char c;
while (!exit) {
printf("Do you wish to exit the program ? (Y/N) ");
c = getchar();
getchar();
if (c == 'Y' || c == 'y')
exit = true;
}
printf("Have a nice day %s %s.\n", name, lastname);
return 0;
}

有人可以告诉我问题是什么吗?

最佳答案

进入循环时,输入流中已经存在换行符。这会导致您的第一个 getchar 返回 \n。第二个 getchar 读取 Y。要解决此问题,您需要在进入循环之前调用 getchar

关于C getchar() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555255/

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