对于编程作业,我应该创建一个模型学生数据库.要初始化数据库,我们必须编写一个函数InitDB
来分配所有内存,等等.这是我到目前为止所写InitDB
的struct
内容:(包括内容,main()
以防万一)
typedef struct {
double mathGrade;
} stuDB;
typedef struct {
int numStudents;
stuDB students[MaxStudents];
} classDB;
main(){
int avGrade;
classDB *example;
InitDB(example);
//printf("Average class grade is %d\n",AvGrade(example)); <----ignore
getchar();
}
void InitDB(classDB *example){
int i=-1,numS;
printf("How many students?");
scanf("%d",&(example->numStudents);
stuDB *pstudents[numS]; //array of pointers to each student rec of type stuDB
do {
pstudents[i] = (stuDB *)malloc(sizeof(stuDB));
if(pstudents[i]==NULL) break;
i++;
} while(i<numS);
pstudents[0]->mathGrade = 42; //just for testing
pstudents[1]->mathGrade = 110;
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,它冻结在第3行InitDB
(scanf
行).当我说冻结时,我的意思是,如果我使第二个参数scanf
不是指针变量,它的命令提示符也是如此.但是&(example->numStudents)
应该已经是一个指针......对吗?所以我没有想法.为什么这样做,我该如何解决?
另外,我不太确定我malloc
是否正确设置了语句,但由于后一个问题而无法确定它是否有效.我是在正确的轨道......还是什么?
没有classDB实例 - 只是指向classDB的指针.将代码更改为:
classDB example;
InitDB(&example);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
139 次 |
最近记录: |