- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我做了一个函数,用malloc创建一个struct,并把它赋给一个指针,然后我想把f值扫描到struct中,但是我的程序在我输入值后崩溃了。
下面是代码:
StudentPtr createStudent(StudentPtr toAdd)
{
toAdd = (StudentPtr)malloc(sizeof(Music_student));
if(toAdd = NULL)
{
printf("ALLOCATION FAILED");
return NULL;
}
printf("insert student ID\n");
scanf("%d", &((*toAdd).student_ID));
while((*toAdd).student_ID <= 10000 || (*toAdd).student_ID >= 99999)
{
printf("Invalid student id try_again: value between 10,000 and 99,999\n");
printf("insert student ID\n");
scanf("%d", &((*toAdd).student_ID));
}
printf("insert hw grade\n");
scanf("%lf", &((*toAdd).hw_average));
while((*toAdd).hw_average < 0 || (*toAdd).hw_average > 100)
{
printf("Invalid hw grade: value between 0 and 100");
printf("insert hw grade\n");
scanf("%lf", &((*toAdd).hw_average));
}
printf("insert exam grade\n");
scanf("%d", &((*toAdd).exam_grade));
while((*toAdd).exam_grade < 0 || (*toAdd).exam_grade > 100)
{
printf("Invalid exam grade: value between 0 and 100");
printf("insert exam grade\n");
scanf("%d", &((*toAdd).exam_grade));
}
我试着玩 * 和&,然后把它们切换成-〉,但似乎什么都不起作用。
1条答案
按热度按时间nlejzf6q1#
toAdd = NULL
是一个赋值语句,这意味着toAdd
现在是NULL,当你的程序随后遵从toAdd
时,你的程序将出现segfault。你打算使用等式表达式toAdd == NULL
或者简单地使用一元表达式!toAdd
。找出你需要在编译器上启用什么标志来生成一个警告。