用strcmp比较字符串时闪退卡bug

调试的时候说strcmp这一步开始就出错了,但是我左看右看都觉得没毛病啊?请问是哪里出了错?

while(p!=NULL)
    {
        int ret = strcmp(p->lastname, p->next->lastname);
        if (ret > 0)
        {
            swap(p->firstname, p->next->firstname);
            swap(p->lastname, p->next->lastname);
            swap(p->SSN, p->next->SSN);
            swap(p->ncourse, p->next->ncourse);
            swap(p->stucourse, p->next->stucourse);
        }
        p = p->next;
    };

while(p!=NULL),但不代表p->next不为空啊。p->next->lastname一旦p->next为空就崩溃了

参考GPT和自己的思路:根据你提供的代码,代码中对比字符串的部分并没有问题,所以触发闪退的问题可能出现在其他部分。我建议你检查一下以下几个方面:

  1. 确保你的链表结构是正确的,且没有出现指针误用或指针未初始化的问题。

  2. 确保调用strcmp函数之前,p及p->next等指针的值都是有效的,即指向已经正确赋值的内存地址。

  3. 看看你在调用swap函数时是否传参正确,swap函数是如何实现的,是否有错误。

另外,建议你在代码中加入一些调试语句,打印一些变量的值或者中间结果,方便你 debug 找出问题所在。