尝试将f输入扫描到struct [closed]时代码崩溃

qpgpyjmq  于 2023-01-16  发布在  其他
关注(0)|答案(1)|浏览(103)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是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));
    }

我试着玩 * 和&,然后把它们切换成-〉,但似乎什么都不起作用。

nlejzf6q

nlejzf6q1#

toAdd = NULL是一个赋值语句,这意味着toAdd现在是NULL,当你的程序随后遵从toAdd时,你的程序将出现segfault。你打算使用等式表达式toAdd == NULL或者简单地使用一元表达式!toAdd。找出你需要在编译器上启用什么标志来生成一个警告。

相关问题