我的switch语句出现问题......是否有任何限制?

时间:2016-03-13 10:48:38

标签: c switch-statement

while(5){
    printf("\n1-Insert_at_end\n2-search_value\n3-Display_list\n4-delete_entire_list\n");
    printf("\n Your option\t");
    scanf("%d\n",&o);
    switch(o){
        case 1:
            insertion_at_end();
            break;
        case 2:
            printf("element to search\n");
            scanf("%d\n",&a);
            search_value(a);
            break;
        case 3:
            display_list();
            break;
        case 4:
            delete_entire_list();
            break;
        default:
            printf("inavalid option\n");
            break;

    }

1 个答案:

答案 0 :(得分:2)

您的scanf有一个额外的空白

scanf("%d\n",&o);
//     ^^   <== read optional whitespace followed by digits
//       ^^ <== read whitespace

此scanf仅在看到不是空白的内容时才会停止。例如,输入 Space Space 4 2 ENTER ENTER x 会使%d忽略使用42分配给o的前两个空格,然后scanf将忽略两个ENTERS并在到达输入缓冲区中的x时停止。

你只想

if (scanf("%d", &o) != 1) /* error */;