c - gets() 内部开关被忽略

标签 c

有人能告诉我为什么 case 1 中的 gets 被完全忽略了吗?

    // #define M 50 is at the top

    char product[M] = {0};
    int choice = -1;

    printf("Command: ");
    scanf("%d", &choice);

    switch(choice){

        case 0:
            break;

        case 1:
            printf("Product: ");
            gets(product);
            insert_product(warehouse, price, product);
            break;

        case 2:
            // print_all();
            break;

        default:
            printf("Scelta non valida\n");
            break;

    }

最佳答案

gets 可能会被前一个输入的结尾字符跳过。尝试在 gets 之前添加一个 getchar() 以查看是否是问题所在。

关于c - gets() 内部开关被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840740/

相关文章:

c++ - 为什么我的 while 循环是无限的?

c - 如何扩展C程序以获得所有核心的CPU使用率

c - 我在下面的行中收到错误。怎样才能纠正呢?还是我实现错误的方式?

c - 关于读者/作者同步

c - 没有格式说明符的 snprintf()?

C:对 'clock()' 的 undefined reference

c - 即使在写端关闭后也从管道读取

c - C 中的动态矩阵重新分配 - 在访问冲突读取位置 (msvcr120d.dll) 出现错误未处理的异常

c - 如何在Atemga128中使用定时器/计数器2...?

c - C 中函数的 char 指针是否需要内存分配