在C语言中使用switch语句调用方法后,while循环自动运行

易卜拉欣·拉希米|

函数内部C程序中,int main()我有一个while循环,该循环要求用户提供char输入,并在获取输入后调用方法。获取输入后调用的方法使用aswitch打印或调用其他函数。问题在于,在第一次运行while循环并从用户那里获取输入之后,并且匹配完成的案例之后,while循环会自动运行一次,而无需等待用户输入任何内容。作为C的新手,这种行为对于我来说很奇怪因此,我想知道如何处理这种情况,以防止while循环自动运行并迫使程序等待用户输入任何内容到终端?贝娄是我的代码:

void switchFuncs(struct driver *allDrivers, char operation)
{
    int driverCounter = 0;
    char srchDriver[20];
    int birthYear = 0;
    double kolo = 0.00;
    int pKolo = 0;

    convert_file_data_to_struct(allDrivers, &driverCounter);

    switch (operation)
    {
        case 's':
            printf("Case S is called!!!!\n");
            break;
     
        case 'c':
            printf("Case C is called!!!!\n");
            break;
        case 'n':
            newdriver(allDrivers, driverCounter);
            break;
        case 'x':
            exit(0);
            break;
        default:
            printf("What you typed is not a valid operation!!! \n");
            break;
    }

}

int main()
{
    char operation = 't';
    struct driver *allDrivers;
    int flag = 1;

    while (flag == 1) {
        char operation;
        printf("Select the operation you want to do from the following list: \n\n");
        printf("For Summary Type s \nFor Change Name type c \nFor New Name type n \n");
        printf("To Exist From Program type x \n");
        scanf("%c", &operation);
        if( operation == 'x' || operation == 'X') {
            flag = 0;
        }
        allDrivers = (struct driver*) malloc(1500 * sizeof(struct driver));
        switchFuncs( allDrivers, operation );
        free(allDrivers);
    } 
    return 0;
} 

仅在运行一次该程序之后,贝娄便是一个示例结果:

Select the operation you want to do from the following list: 

For Summary Type s 
For Change Name type c 
For New Name type n 
To Exist From Program type x 
s
Case S is called!!!!
Select the operation you want to do from the following list: 

For Summary Type s 
For Change Name type c 
For New Name type n 
To Exist From Program type x 
What you typed is not a valid operation!!! 
Select the operation you want to do from the following list: 

For Summary Type s 
For Change Name type c 
For New Name type n 
To Exist From Program type x 
米洛

在“%c”之前放置一个空格,如下所示:

scanf(" %c", &operation);
       ^
// Space between " and %c

请参阅此处的说明:https : //stackoverflow.com/a/17079227/1755482

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Switch 语句调用的 C# 方法 - 遇到麻烦

来自分类Dev

C ++使用if语句调用超类

来自分类Dev

C语言中此switch语句的替代方法

来自分类Dev

在C语言中混合使用“ switch”和“ while”

来自分类Dev

在Javascript中使用if语句调用嵌套函数

来自分类Dev

使用if语句调用函数

来自分类Dev

C 语言中的嵌套 While 循环

来自分类Dev

如何在汇编语言中使用while循环显示字符串10次?

来自分类Dev

无法从Razor'IF'语句调用Javascript方法

来自分类Dev

C语言中的For循环

来自分类Dev

关于在C语言中使用“功能”

来自分类Dev

比在C语言中使用较长的“ if / else if”语句系列更好的选择?

来自分类Dev

如何在C语言中使用循环在字符数组中输入字符?

来自分类Dev

如何在C语言中使用循环打印n个*?

来自分类Dev

如何在C语言中使用循环打印n个*?

来自分类Dev

如何在for循环中使用scanf作为C编程语言中的条件

来自分类Dev

在dplyr的summary函数中使用if语句调用自定义函数

来自分类Dev

如何在Django中使用{%url%}语句调用“向导视图”?

来自分类Dev

C语言中的Do-While循环问题

来自分类Dev

C语言中的goto语句

来自分类Dev

错误A2070:在汇编语言中使用嵌套的while循环时,无效的指令操作数

来自分类Dev

laravel select语句使用“ with”语句调用子模型

来自分类Dev

C语言中的循环优化

来自分类Dev

在C ++中未使用INSERT语句调用SQLite3_exec回调

来自分类Dev

为什么循环使用“ scanf”方法在Objective-C语言中出现死圈?

来自分类Dev

在while循环中使用if语句

来自分类Dev

在Python中使用if / else语句的While循环

来自分类Dev

在C语言中使用libmicrohttpd实现HTTP 302响应

来自分类Dev

在C语言中使用八度内置函数

Related 相关文章

  1. 1

    使用 Switch 语句调用的 C# 方法 - 遇到麻烦

  2. 2

    C ++使用if语句调用超类

  3. 3

    C语言中此switch语句的替代方法

  4. 4

    在C语言中混合使用“ switch”和“ while”

  5. 5

    在Javascript中使用if语句调用嵌套函数

  6. 6

    使用if语句调用函数

  7. 7

    C 语言中的嵌套 While 循环

  8. 8

    如何在汇编语言中使用while循环显示字符串10次?

  9. 9

    无法从Razor'IF'语句调用Javascript方法

  10. 10

    C语言中的For循环

  11. 11

    关于在C语言中使用“功能”

  12. 12

    比在C语言中使用较长的“ if / else if”语句系列更好的选择?

  13. 13

    如何在C语言中使用循环在字符数组中输入字符?

  14. 14

    如何在C语言中使用循环打印n个*?

  15. 15

    如何在C语言中使用循环打印n个*?

  16. 16

    如何在for循环中使用scanf作为C编程语言中的条件

  17. 17

    在dplyr的summary函数中使用if语句调用自定义函数

  18. 18

    如何在Django中使用{%url%}语句调用“向导视图”?

  19. 19

    C语言中的Do-While循环问题

  20. 20

    C语言中的goto语句

  21. 21

    错误A2070:在汇编语言中使用嵌套的while循环时,无效的指令操作数

  22. 22

    laravel select语句使用“ with”语句调用子模型

  23. 23

    C语言中的循环优化

  24. 24

    在C ++中未使用INSERT语句调用SQLite3_exec回调

  25. 25

    为什么循环使用“ scanf”方法在Objective-C语言中出现死圈?

  26. 26

    在while循环中使用if语句

  27. 27

    在Python中使用if / else语句的While循环

  28. 28

    在C语言中使用libmicrohttpd实现HTTP 302响应

  29. 29

    在C语言中使用八度内置函数

热门标签

归档