在我的程序中,我有一个用于获取和控制输入的功能(我只想输入两种类型),我想重复输入,直到用户按-1,我的意思是如果用户按a, -11,程序没有退出。如何检查输入并重复功能"输入"只有当用户没有按-1?
时void input (double *l1){
double temp1=0;
printf("\nInsert the first value: ");
while (scanf("%lf",&temp1) != 1){
printf("Reinsert the first value: ");
while (getchar() != '\n');
}
这是主要的:
int main(){
int flag,num;
double a;
do{
switch(flag){
default:
input(&a);
printf("PRESS -1 TO QUIT: ");
scanf("%d",&flag);
if (flag != -1) {
num=1;
}
else num=0;
break;
}
}while(num != 0);
printf("\nTHANK YOU!");
}
现在我只有一个问题,如果我按下任何字符(例如:a,b,aa)而不是-1,那么该值会在函数输入中使用但我不想要! 我希望用户在按-1时退出程序,在另一种情况下(字符或其他数字)主调用输入。我该怎么办?
答案 0 :(得分:0)
考虑使用fgets进行输入,使用sscanf来解析输入值。
#include <stdio.h>
#include <string.h>
int getdouble (double *l1){
char line[100] = "";
printf("\nInsert a double: ");
fflush ( stdout);
while ( fgets ( line, sizeof line, stdin)) {
if ( 0 == strcmp ( line, "-1\n")) {
return 2;
}
if ( 1 != sscanf(line, "%lf",l1)) {
printf("Try again: ");
fflush ( stdout);
}
else {
return 1;
}
}
return 0;
}
int main( void){
int flag,num;
double a;
do{
switch(flag){
default:
printf("PRESS -1 TO QUIT: ");
num = getdouble(&a);
break;
}
}while(num == 1);
printf("\nTHANK YOU!");
}