在C中切换菜单

时间:2014-03-14 16:57:20

标签: 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();

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");
  }

Thanx对所有回复,我打算做什么:

.
.
.

int userInput();

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


int sel = 1; //select number for menu


while(sel)
{
  sel = userInput();

  switch(sel)
  {
case 1:
  printList();
  break;

case 2:
  editStud();
  break;

case 3:
  delStud();
  break;

case 4:
  addStud();
  break;

case 0:
  break;

default:
  printf("That is not a valid selection!\n");
  }

}

.
.
.

错误是: 1.括号不正确 2.使用while(userInput)而不是while(sel) 3.案例与数字之间没有空格

4 个答案:

答案 0 :(得分:1)

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

switch (sel) {

case 1:
  printList();
  break;

case 2:
  editStud();
  break;

case 3:
  delStud();
  break;

case 4:
  addStud();
  break;

case 0:
  break;  
     

}

答案 1 :(得分:0)

变化:

case1:

case 1:

switch语句也需要一个起始{和一个结尾}

答案 2 :(得分:0)

1)你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;  

   }

}

答案 3 :(得分:0)

  1. 在Switch语句之后,您需要一个开括号。

    switch(sel) {
    
  2. case是一个关键字,这意味着你可能想要它周围的空白。

    case 1:
    case 2:
    ...
    
  3. 你有一个开放的支撑,你可能需要一个紧支撑。开括号的数量应与闭括号的数量相匹配。

    }
    
  4. 你的while语句很奇怪。你可能想用那个做其他事......

  5. 所以,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;  
            }
        }
    }