【发布时间】:2012-06-26 12:18:10
【问题描述】:
基本上我在这里有 2 个链表:list 和 distinct。有几组词早先已保存到“列表”结构中。打算编写一个程序,该程序将找到不同/唯一的单词并将其保存到“不同”结构中。这是我到目前为止基于我的指针概念得到的。但是,当我尝试打印“distinct”时,程序崩溃:(如果我错了,请纠正我。
struct list {
char string[50];
struct list *next;
};
struct distinct {
char string[50];
struct distinct *next;
};
void checkdistinct() {
list *ori = NULL;
distinct *copy = NULL;
distinct *check = NULL;
if(ori == NULL && copy == NULL) { //first time.
ori = ori->next;
copy = copy->next;
copy = (distinct*)malloc(sizeof(distinct));
strcpy(copy->string, ori->string);
ori = ori->next;
copy = copy->next;
}
else {}
while(ori!=NULL) {
check = check->next;
while(check != NULL) {
if(strcmp(ori->string, check->string)!=0) {
check = check->next;
}
else {
ori = ori->next;
check = NULL;
}
}
//only compare same casing words, for now.
copy = (distinct*)malloc(sizeof(distinct));
strcpy(copy->string, ori->string);
ori = ori->next;
copy = copy->next;
}
}
当我尝试在 main 中打印时,它会崩溃:(如果您需要额外的 cmets 代码,请回复。谢谢!
【问题讨论】:
-
当您遇到崩溃时,您应该始终做的第一件事就是在调试器中运行您的程序。它不仅可以帮助您确定崩溃的位置,还可以让您检查变量以帮助您找出崩溃的原因。
-
我想我做到了。不久前刚开始使用 c++ Visual Studio 还在尝试熟悉它。我尝试在整个代码中放置断点,结果发现上面的函数是导致问题的函数。
-
问题标记为 C。不要使用 C++ 编译器编译 C 代码。
-
您不需要断点,如果发生崩溃,那么调试器将在发生崩溃的实际行上停止。然后只需将鼠标光标移到不同的变量上即可查看它们的值,或者查看“局部变量”窗口。
-
@wildplasser,Visual C++ 包含 C 编译器。
标签: c copy linked-list distinct