调用开关中的功能(In C)

时间:2017-11-04 15:31:58

标签: c

在我的程序中,我有一个用于获取和控制输入的功能(我只想输入两种类型),我想重复输入,直到用户按-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时退出程序,在另一种情况下(字符或其他数字)主调用输入。我该怎么办?

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!");
}