好的,所以fgets从文件重定向输入读取行,然后使用这些行计算switch语句。
我正在尝试测试案例“1”,但它不起作用。
这是我的输出:
DATA SET ANALYSIS1. Show all the data2. Calculate the average for an experiment3. Calculate the average across all experiments4. QuitSelection: 1
有人知道为什么我的switch语句都没有运行吗?显然var等于1,所以开关至少应该是printingHELLO,但是它什么也不做。帮忙?

while(fgets(str,100,stdin) != NULL && (strcmp(str,"4") && strcmp(str,"4\n")))
    {
        var = atoi(str);
        printf("DATA SET ANALYSIS\n1.\tShow all the data\n2.\tCalculate the average for an experiment\n3.\tCalculate the average across all experiments\n4.\tQuit\nSelection: %d\n",var);
        switch(var)
        {
        case '1' :
            printf("HELLO\n");
            for(j=0;j<i;j++)
            {
                printf("%s",experiments[j]);
                for(k=0;k<10;k++)
                {
                    printf("%d ",data[j][k]);
                }
                printf("\n");
            }
            break;
        }
    }

最佳答案

case '1' :

'1'是字符1(ASCII 49),而不是整数1,将其更改为:
case 1 :

注意,像'1'这样的字符文本在C中有类型int,所以语法是正确的,但不是您期望的行为。

关于c - C:switch语句不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22282573/

10-13 05:55