我需要重复一个过程,我正在使用一段时间。按下Enter键并且使用if(getchar())时,我需要执行其他过程。问题在于,while在到达if时会“暂停”,因为它正在检查getchar()是否为真。我需要知道如何在不停止输入的情况下继续循环。 我正在制作一个游戏,其中您有1分钟的时间来猜测尽可能多的名字。因此,while()的目的是从60秒倒计时至0秒(清除屏幕并打印新的秒数和您实际上每秒猜测的名称)。因此,我希望它继续运行while(),以便计时器保持运行,但是如果按enter键,它只会将猜测的名称更改为新名称,并且计时器保持运行。 (我不知道我是否清楚,但这是个主意)
//program in c
while(//specific condition)
{
/*- here goes the code for a timer that every second it clears the
- terminal and prints the next number (in seconds).
-
-
-*/
if(getchar()) //the current program stops here and keeps running the loop
//until enter is pressed
{
//second process
}
}
我希望有一段时间可以循环播放,直到有回车为止。发生这种情况时,我希望它输入if,退出if并继续循环。
答案 0 :(得分:0)
char buffer[100];
while (fgets(buffer, sizeof(buffer), stdin))
{
if (strlen(buffer) == 1)
break;
if (sscanf(buffer, "%f", &f) == 1)
{
total += f;
printf("Enter another number: ");
}
}
答案 1 :(得分:0)
您不能使用if(getchar()=='\n')
因此程序将一直运行,直到按下Enter键为止
因为将出现'\ n'缓冲区值,它将更改下一次迭代
答案 2 :(得分:0)
如果您的环境中有conio.h
可用,则可以使用kbhit
while(//specific condition)
{
/*--process to do
-
-
-
-*/
if(kbhit())
{
if (getchar() == 0x0d)
{
break;
}
}
//second process
}
在此循环中,第二个过程将在不检查回车键的情况下运行,并且仅在按下回车键时退出。
答案 3 :(得分:0)
char a;
printf("Enter charecter or press enter to exit:");
scanf("%c",&a);
while(1)
{
//process 1 loop
if (a == '\n')
{
// process 2 here, if process two has loop make it's own loop here
printf("we are in process 2\n");
break;
}
getchar();
printf("Enter charecter or press enter to exit:");
scanf("%c",&a);
}
您没有给出足够的代码来了解正在使用的输入流,但是如果是文件流或字符串,则可以通过用fgets替换scanf或文件流输入(例如fscanf或fread)来执行相应的操作