gpt4 book ai didi

c - 学生结构问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:33 26 4
gpt4 key购买 nike

我正在学习structs,但我对它们以及它们的作用仍然有些困惑。我拥有的代码是我的尝试,并且我不断遇到段错误。我的主要目标是让用户在调用函数时查看他们想要添加多少学生,以及姓名和分数的每个信息。我还想将数据数组打印给用户。

  • 对于 loadStudentData() 函数,我想将 newNameNewScore 存储到 newStudent结构。

  • 对于 printStudentData() 我想打印单个学生的数据

  • 然后对于 printStudentArray(),我想为学生数组的每个成员调用 printStudentData() 函数。

我的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STUDENT_NAME_LENGTH 20

typedef struct{
char* name;
int score;
}Student;

void loadStudentData(Student *newStudent,char* newName,int newScore);
int printStudentData(Student student);
void printStudentArray(Student* students, int numStudents);


/*
*
*/
int main(int argc, char** argv) {
int numberOfStudents;
Student *newStudent;
char* newName;
int newScore;
int student;


Student students[numberOfStudents];

printf("how many students: ");
scanf("%d", &numberOfStudents);


loadStudentData(newStudent, newName, newScore);

printStudentArray(students, numberOfStudents);


return (EXIT_SUCCESS);
}

void loadStudentData( Student *newStudent, char* newName, int newScore){
int i;
char *studentName = (char *) malloc(STUDENT_NAME_LENGTH * sizeof(char));
scanf("%s", studentName);
newStudent->name = studentName;

int nScore;
scanf("%d", &nScore);
newStudent[i].score = newScore;
}
int printStudentData(Student student){

int i;

printf("Student name\t%s\n",) ;
printf("Student score\t%d\n",);

}



void printStudentArray(Student* students, int numStudents){
int i;
for (i = 0; i < numStudents; i++) {
printf("Student name\t%s\n", students[i].name);

printf("Student score\t%d\n", students[i].score);
}
}

最佳答案

在实际初始化结构数组之前调用 printStudentArray。这意味着数组中的所有数据都将不确定,并且以任何方式使用它,除了初始化它都会导致未定义的行为(这是导致崩溃的常见原因)。

更具体地说,问题可能出在您尝试打印名称时,因为 name 指针可能指向任何地方

关于c - 学生结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com