调试的时候说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和自己的思路:根据你提供的代码,代码中对比字符串的部分并没有问题,所以触发闪退的问题可能出现在其他部分。我建议你检查一下以下几个方面:
确保你的链表结构是正确的,且没有出现指针误用或指针未初始化的问题。
确保调用strcmp函数之前,p及p->next等指针的值都是有效的,即指向已经正确赋值的内存地址。
看看你在调用swap函数时是否传参正确,swap函数是如何实现的,是否有错误。
另外,建议你在代码中加入一些调试语句,打印一些变量的值或者中间结果,方便你 debug 找出问题所在。