Subscription *current_sub;
current_sub = sub_user->subscriptions;
while (current_sub != NULL){
Event *sub_events;
sub_events = current_sub->calendar->events;
while (sub_events != NULL){
add_event(ordered_events, od, sub_events->description, sub_events->time);
printf("added! n");
if(sub_events ->next != NULL){
sub_events = sub_events->next;
}
}
if (current_sub->next != NULL) {
current_sub = current_sub->next;
}
}
所以我的循环出于某种原因无限循环,我不知道为什么。两者都检查 null,我的链表都应该在某个时候终止。我应该注意的与双 while 循环检查空指针有关吗?
编辑:没关系无限循环是固定的。非常感谢!
您正在检查此条件
while (current_sub != NULL)
然后使用if
条件,确保如果只有current_sub->next != NULL
则递增current_sub
if (current_sub->next != NULL)
因此,当next
指向NULL
时,current_sub
永远不会递增到 next
内部while (sub_events != NULL)
和if(sub_events ->next != NULL)
也是如此
if(sub_events ->next != NULL){
sub_events = sub_events->next;
}
如果sub_events ->next
为 NULL,则sub_events不会更改,因此下一次迭代将无限使用相同的值。与
if (current_sub->next != NULL) {
current_sub = current_sub->next;
}
条件没有意义;只需删除它们并无条件地完成作业。