我想做一个程序,它会无休止地工作,直到用户按下ESC键。我需要处理用户的输入,因为我输入的值应该是整数。我该怎么做呢?
#include <stdio.h>
int main(){
int num,factorial;
while(1){
factorial = 1;
printf("Enter Number : ");
scanf("%d",&num);
for(int i = 1 ; i<=num ; i++){
factorial *= i;
}
printf("Factorial : %d\n",factorial);
}
return 0;
}
程序应计算给定数字的阶乘。
我试过了,但它做了一个无休止的循环。
if(scanf("%d", &sayi) != 1){
printf("Error Occured.\n");
continue;
}
1条答案
按热度按时间zlhcx6iw1#
在Microsoft Windows上,无法使用C标准程式库提供的函式来侦测ESC键。
但是,可以使用下列platform特定函数来执行此操作:
_getch
_getche
ReadConsoleInput
当使用这些函数时,你必须自己编写基本的输入功能。
因此,如果你正在寻找一个简单的解决方案,这可能不是你想要的。继续使用C标准库提供的函数,并让用户做一些其他的事情来表明他们已经完成,例如告诉用户输入数字
-1
,这将是更容易的。如果你想做一些更优雅的事情,比如让用户在完成时输入
q
或quit
而不是-1
,那么你可以使用函数fgets
而不是scanf
,以便首先将用户的一行输入作为一个字符串读取,然后将这个字符串与q
或quit
进行比较。并且只有当比较失败时,才尝试将字符串转换为数字,例如使用函数strtol
。以下是一个示例:
此程序具有以下行为: