Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 虽然未定义变量,但变量不递增_C_Variables_Increment_Post Increment - Fatal编程技术网

C 虽然未定义变量,但变量不递增

C 虽然未定义变量,但变量不递增,c,variables,increment,post-increment,C,Variables,Increment,Post Increment,正如你们所看到的,我没有定义变量“n_students”,因此它应该能够毫无问题地递增,但事实并非如此。当我把它放在用户定义函数中时,它也不会增加,所以这里出现了什么问题 #define MAX_CLASS_SIZE 5 #define MAX_NAME_SIZE 11 int main(void){ student_t studentlist[MAX_NAME_SIZE]; int n_students = 0; int result

正如你们所看到的,我没有定义变量“n_students”,因此它应该能够毫无问题地递增,但事实并非如此。当我把它放在用户定义函数中时,它也不会增加,所以这里出现了什么问题

#define MAX_CLASS_SIZE 5
#define MAX_NAME_SIZE 11

    int main(void){
        student_t studentlist[MAX_NAME_SIZE];
        int n_students = 0; 
        int result;
        /* TODO */

        while (1){
        printMenu();
        int choice;
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                if (n_students == MAX_CLASS_SIZE) {
                    printf("Class is full\n");
                }
                else {
                    addStudent(studentlist, n_students);
                    n_students++;
                }
  case 2:
            if (n_students == 0) {
                    printf("Class is empty\n");
                } else {
                    n_students--;
                }
                break;
        case 3:
            if (n_students == 0){
                    printf("Class is empty\n");
                } 
                else {
                    displayStudents(studentlist, n_students);
                } 
                break;
        case 4:
            saveDatabase(studentlist, n_students);
                break;
        case 5:
            result = loadDatabase(studentlist);
            if (result >= 0){
                n_students = result;
            }
            break;
        case 6:
            return 0;
        default:
            printf("Invalid choice.\n");
            break;
            }
    }

}


void addStudent(student_t *studentlist,int n_students)
{
    char name[1024];
    printf("Enter name>");
    scanf("%s", name);
    name[MAX_NAME_SIZE-1]= '\0';
    strcpy(studentlist[n_students].name, name);

    int day,month,year;
    while (1){
        printf("Enter birthday: day>");
        scanf("%d", &day);
        if (day >= 1 && day <=31){
            break;
        }
        printf("Invalid day. ");
    }

    while (1){
        printf("Enter birthday: month>");
        scanf("%d", &month);
        if(month >= 1 && month <= 12){
            break;
        }
        printf("Invalid month. ");
    }

    while (1){
        printf("Enter birthday: year>");
        scanf("%d", &year);
        if (year >= 1800 && year <= 2017){
            break;
        }
        printf("Invalid year. ");
    }

    float gpa;
    while (1){
        printf("Enter GPA>");
        scanf("%f", &gpa);
        if (gpa >= 0.0 && gpa <= 4){
            break;
        }
        printf("Invalid GPA. ");
    }

    studentlist[n_students].birthday.day = day;
    studentlist[n_students].birthday.month = month;
    studentlist[n_students].birthday.year = year;
    studentlist[n_students].gpa = gpa;
}
#定义最大类大小5
#定义最大名称大小11
内部主(空){
学生名单[最大姓名大小];
int n_学生=0;
int结果;
/*待办事项*/
而(1){
打印菜单();
智力选择;
scanf(“%d”,选择(&C);
开关(选择){
案例1:
如果(n_学生==最大班级人数){
printf(“类已满\n”);
}
否则{
addStudent(学生名单,n_学生);
n_学生++;
}
案例2:
如果(n_学生==0){
printf(“类为空\n”);
}否则{
n_学生--;
}
打破
案例3:
如果(n_学生==0){
printf(“类为空\n”);
} 
否则{
显示学生(学生名单,n_学生);
} 
打破
案例4:
保存数据库(学生列表,n_学生);
打破
案例5:
结果=加载数据库(学生列表);
如果(结果>=0){
n_学生=结果;
}
打破
案例6:
返回0;
违约:
printf(“无效选择。\n”);
打破
}
}
}
void addStudent(学生列表,国际学生)
{
字符名[1024];
printf(“输入名称>”);
scanf(“%s”,名称);
名称[最大名称大小-1]='\0';
strcpy(studentlist[n_students]。姓名,姓名);
整数日、月、年;
而(1){
printf(“输入生日:day>”;
scanf(“%d”、&day);

如果(天>=1&&day=1&&month=1800&&year=0.0&&gpa首先,在
案例1之后,您错过了
休息时间

    switch (choice)
    {
        case 1:
            if (n_students == MAX_CLASS_SIZE)
            {
                printf("Class is full\n");
            }
            else
            {
                addStudent(studentlist, n_students);
                n_students++;
            }
            break; <----------------------
        case 2:
所以数组大小应该是

student_t studentlist[MAX_CLASS_SIZE];

此处的信息不足,无法回答。请使用MCVE()因此,我们可以看到真正的问题。就目前情况而言,
n_学生
应该在添加学生时递增,除非
MAX_CLASS_SIZE
为零。请注意,您使用了两个不同的宏:
MAX_NAME_SIZE
MAX_CLASS_SIZE
。缺少
break;
意味着您将遇到
n_学生--
rds.调试器会告诉你的。
scanf(“%s”,name);name[MAX\u name\u SIZE-1]='\0';
也很糟糕。在你知道如何使用调试器之前,请不要再编写任何代码。TBH,你已经是一个太晚的应用程序了:(
student_t studentlist[MAX_CLASS_SIZE];