C语言中的切换菜单

C语言中的切换菜单,c,switch-statement,C,Switch Statement,我正在尝试使用此C程序中的菜单,但我不断收到一个错误: 3.c: In function 'main': q3.c:99:3: error: expected declaration or statement at end of input } ^ q3.c:99:3: error: expected declaration or statement at end of input 代码 #include <stdio.h> int userInput(); v

我正在尝试使用此C程序中的菜单,但我不断收到一个错误:

3.c: In function 'main':

q3.c:99:3: error: expected declaration or statement at end of input

  }

  ^

q3.c:99:3: error: expected declaration or statement at end of input
代码

#include <stdio.h>

int userInput();

void printList();
void editStud();
void delStud();
void addStud();

struct studentRec
{
    char name[25];
    char init[25];
    char pNu[25];    
    int studNum;
    float bBalance;
};

  int main()
  {
    //no constants

    struct studentRec students;  

    FILE *fp,*fw,*ft;

    int sel = 1; //select number for menu


    while(userInput)
    {
      sel = userInput();

      switch(sel)
    case1:
      printList();
      break;

    case2:
      editStud();
      break;

    case3:
      delStud();
      break;

    case4:
      addStud();
      break;

    case0:
      break;  

    {

  }

  int userInput()
  {
    int choice;

    printf("===========================\n");
    printf("(1). View all students\n");
    printf("(2). Edit student details\n");
    printf("(3). Delete student\n");
    printf("(4). Add new student\n");
    printf("(0). Exit\n");
    printf("===========================\n\n");

    printf("Enter your choice Please\n");
    scanf("%d", &choice);

    return choice;
  }

  void printList()
  {
     printf("*Prints list*\n");
  }

  void editStud()
  {
     printf("*edits entry*\n");
  }

  void delStud()
  {
     printf("*deletes entry*\n");
  }

  void addStud()
  {
     printf("*adds entry\n");
  }
错误是: 1.不正确的while大括号 2.使用while(用户输入)代替while(选择) 3.大小写和数字之间没有空格更改:

case1:

等等

此外,switch语句需要一个起始
{
和一个结束
}
1)while中的大括号是没有意义的(结束前的大括号是while)

2) switch语句没有括号

3) 此外,在
case
关键字和开关输入之间应该有一个空格

正确的方法是

 while(userInput){

  sel = userInput();

  switch(sel){

    case 1:
    printList();
    break;

    case 2:
    editStud();
    break;

    case  3:
    delStud();
    break;

    case 4:
    addStud();
    break;

    case 0:
    break;  

   }

}
  • 在Switch语句之后,需要一个打开的大括号

    switch(sel) {
    
  • case
    是一个关键字,这意味着您可能希望它周围有空格

    case 1:
    case 2:
    ...
    
  • 你有一个开放的大括号,你可能需要一个封闭的大括号。开放大括号的数量应与闭合大括号的数量相匹配

    }
    
  • 你的while声明很奇怪。你可能想用这个做点别的

  • 因此,
    main()

    int main()
    {
        struct studentRec students;  
        FILE *fp,*fw,*ft;
        int sel = 1; //select number for menu
    
        while(true)
        {
            sel = userInput();
    
            switch(sel) {
                case 1:
                    printList();
                    break;
    
                case 2:
                    editStud();
                    break;
    
                case 3:
                    delStud();
                    break;
    
                case 4:
                    addStud();
                    break;
    
                case 0:
                    break;  
            }
        }
    }
    

    什么是
    案例1
    ?我唯一的猜测是,您的意思是与1进行比较,在这种情况下,您必须在关键字
    case
    和实际case值之间留出一个空格。以下是您的开关盒的外观:

    int main()
    {
        struct studentRec students;  
        FILE *fp,*fw,*ft;
        int sel = 1; //select number for menu
    
        while(true)
        {
            sel = userInput();
    
            switch(sel) {
                case 1:
                    printList();
                    break;
    
                case 2:
                    editStud();
                    break;
    
                case 3:
                    delStud();
                    break;
    
                case 4:
                    addStud();
                    break;
    
                case 0:
                    break;  
            }
        }
    }
    
    }


    除了它应该是
    案例X
    而不是
    案例X
    之外,您已经用
    {
    而不是
    }
    结束了
    开关
    块(就在
    案例0:
    中断之后;
    )//在(sel){sel=userInput();开关(sel){case 1:printList();break;case 2:editStud();break;case 3:delStud();break;case 4:addStud();break;case 0:break;default:printf(“这不是有效的选择!\n”);}}不要将代码放在注释中,它绝对不可读。编辑你的问题并把它放在那里。
    int main()
    {
        struct studentRec students;  
        FILE *fp,*fw,*ft;
        int sel = 1; //select number for menu
    
        while(true)
        {
            sel = userInput();
    
            switch(sel) {
                case 1:
                    printList();
                    break;
    
                case 2:
                    editStud();
                    break;
    
                case 3:
                    delStud();
                    break;
    
                case 4:
                    addStud();
                    break;
    
                case 0:
                    break;  
            }
        }
    }
    
    switch (sel) {
    
    case 1:
      printList();
      break;
    
    case 2:
      editStud();
      break;
    
    case 3:
      delStud();
      break;
    
    case 4:
      addStud();
      break;
    
    case 0:
      break;