我正在尝试在C中编写一个程序,我打算根据stdin中的用户输入控制while循环的执行。我可以用以下三种不同的方式编写程序,如下所示:
#include<stdio.h>
#include<string.h>
int main()
{
char loop= 'y';
while(loop=='y')
{
printf("Do you want to continue? [y|n]: ");
scanf("%c", &loop);
while(getchar() != '\n');
if(loop != 'y' && loop != 'n')
{
printf("Error! Please enter 'y' or 'n' \n");
loop = 'y';
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char loop[5]= "yes\n";
printf("%s",loop);
while(strcmp(loop,"yes\n")==0)
{
printf("Do you want to continue? [yes|no]: ");
if(strcmp(loop,"yes\n")!=0 && strcmp(loop,"no\n")!=0)
printf("Error! Please Enter 'yes' or 'no'\n");
else
fgets(loop,5,stdin);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char loop= 'y';
while(loop=='y')
{
printf("Do you want to continue? [y|n]: ");
loop = getch();
printf("\n");
if(loop != 'y' && loop != 'n')
{
printf("Error! Please enter 'y' or 'n' \n");
loop = 'y';
}
}
return 0;
}
虽然所有上述方法都根据用户输入执行停止或继续while
循环的任务,但getch()
略有不同。使用getch()
后,用户无需在用户输入y
或n
后按Enter键,程序会在用户提供输入后立即终止或继续。
我知道conio.h
未包含在标准gcc库中,并且不赞成使用。但是,我想使用getch()
或scanf()
或任何其他标准库函数来实现fgets()
的功能。根据{{1}}的功能,我的意思是只要用户按下终端上的所需键,getch()
循环就应该终止,而不需要按用户输入。
while
或fgets()
是否可以执行此任务?