我之前使用scanf来获取输入,但我一直遇到问题,经过一些研究后,看起来fgets在请求输入时看起来更安全。
因为他们可以在技术上输入他们想要的任何东西,但我想只接受Y或N大小写。
然而,由于某种原因,while循环中的fgets不起作用,无论我进入fgets,它总是打印出P并且它永远不会退出while循环。
我只是想知道问题是什么。因为在这个程序中,只要它的Y或N它甚至不应该进入while循环。
但它总是进入while循环,它似乎从未真正输入正确的东西
int main() {
char *answer = malloc (MAX_NAME_SZ);
printf("Welcome to our Physics App!");
printf ("\nWould you like to begin? [Y/N]");
fgets (answer, MAX_NAME_SZ, stdin);
if(*answer == 'y' || *answer == 'Y'){
printf("\nprogram starting now...");
}
else if(*answer == 'n' || *answer == 'N'){
printf("\nThank you, program will close now....");
return 0;
}
while(*answer !='n' || *answer != 'N' || *answer != 'y' || *answer != 'Y'){
printf("\nPlease enter [Y], or [N]");
fgets (answer, MAX_NAME_SZ, stdin);
printf("Your answer was %c", answer);
}