我对C编程很陌生,我正在尝试构建一个控制台应用程序,将一些用户调查数据收集到单个链接列表中,并从中生成统计信息。
主要思想是每次应用程序用户打开应用程序时,现有的调查数据都会从文本文件加载到链接列表节点中。然后,用户可以根据需要操作数据。
我的问题是每次调用importList函数时应用程序崩溃,我无法弄清楚我的问题在哪里。如果有人能指出我的错误在哪里,我将非常感激。谢谢。
以下是从文本文件导入数据的功能:
void importList(struct nodeList** head)
{
//set up the linked list node by node
struct nodeList *temp;
temp =(struct nodeList*)malloc(sizeof(struct nodeList));
temp = *head;
//open survey data file in read mode to import existing survey data
openSurveyFile();
//read in data that's in the text file to nodes in linked list
while(!feof(surFPtr))
{
//import data from file. All data except address is held in single word lines.
fscanf(surFPtr, "%d", &temp->PPS);
fscanf(surFPtr, "%s", temp->name);
fscanf(surFPtr, "%s", temp->surname);
fgets(temp->address, 50, surFPtr);//since address is a multiword string the list needs to read the entire line
fscanf(surFPtr, "%s", temp->eMail);
fscanf(surFPtr, "%d", &temp->age);
fscanf(surFPtr, "%d", &temp->income);
fscanf(surFPtr, "%s", temp->gender);
fscanf(surFPtr, "%d", &temp->exercise);
fscanf(surFPtr, "%d", &temp->alcohol);
fscanf(surFPtr, "%d", &temp->smoking);
fflush(stdin);
//allocate memory for the next node in list
temp->next =(struct nodeList*)malloc(sizeof(struct nodeList));
temp = temp->next;//move on to next node
}
//close survey data file once all data is imported
closeSurveyFile();
}//end of importList function
答案 0 :(得分:0)
在开头附近有一个错误:由于您要用temp
替换temp
,因此您首先将分配的内存丢失到*head
。如果在调用此函数时*head
为null,则在取消引用指针时会出现异常。也许你想做*head = temp;
而不是让你的名单回头?