2015-02-08 54 views
0

我有這個功能打開,讀取和關閉文本文件:信息,在代碼解析,而不是將其存儲到鏈表

void readDataFile() 
{ 
    FILE *fp = fopen("AssignmentOneInput.txt", "r"); //opens AssignmentOneInput.txt for reading 
    char buffer[100]; 
    char *insertName; 
    char *id; 

    if (fp == NULL) 
    { 
     printf("Error while opening the file.\n"); 
     exit(0); 
    } 

    while (!feof(fp)) 
    { 
     fgets(buffer, sizeof buffer, fp); 
     insertName = strtok(buffer, ","); 
     id = strtok(NULL, ","); 
     insertNode(insertName, id); //function right here is supposed to input information 
            //into the linked list 
    } 
    fclose(fp); 
} 

這是我的插入功能:

void insertNode(char *insertName, char *id) 
{ 
    struct node *temp = malloc(sizeof(struct node)); 

    int intId = atoi(id); 

    strcpy(temp->name, insertName); 
    temp->id = intId; 
    temp->next = head; //rest of the new list is entirety of the current list 
    head = temp; //head of the new list is the element being inserted 
} 

我從文本文件中讀取信息。我使用strtok將信息解析爲令牌並將它們存儲到它們各自的變量中。然後,我在while (!feof(fp))循環的末尾調用insertNode將每行信息存儲到鏈接列表中。但是,信息不會被存儲。

每當我在main函數中調用insertNode並遍歷它時,信息就會被存儲到鏈表中而沒有問題。

所以我現在的想法是,解析影響存儲的信息或者我的insertNode函數有問題。

有人可以向我解釋爲什麼這是?

+0

我不明白您的具體問題?你說事情按預期工作,你的疑問如何?請重新設置您的問題並詢問您的確切要求 – Gopi 2015-02-08 07:38:25

+0

閱讀您的問題的人不知道您在說什麼。請說清楚。另外,你有一個[重複的帳戶](http://www.stackoverflow.com/questions/28390829/inserting-a-name-and-numbers-to-end-of-linked-list)? – 2015-02-08 07:52:02

+0

@CoolGuy,no。我不擁有該帳戶。這是我唯一的一個。 – 2015-02-08 07:53:11

回答

0

一些變化,以現有的代碼

while (fgets(buffer, sizeof buffer, fp) != NULL) 
{ 
    insertName = strtok(buffer, ","); 
    id = strtok(NULL, ","); 
    if(insertName != NULL && id != NULL) 
    insertNode(insertName, id);         
}