如何将数据从C

时间:2016-03-30 11:59:12

标签: c linked-list

我对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

1 个答案:

答案 0 :(得分:0)

在开头附近有一个错误:由于您要用temp替换temp,因此您首先将分配的内存丢失到*head。如果在调用此函数时*head为null,则在取消引用指针时会出现异常。也许你想做*head = temp;而不是让你的名单回头?