我剛剛瞭解鏈接列表,我必須做一個包含很多部分的任務,但是我已經開始了,我需要做的第一件事是讀入一個輸入文件放入鏈表中。該文件的 部分是:將文本文件掃描到鏈接列表中
George Washington, 2345678 John Adams, 3456789 Thomas Jefferson, 4567890 James Madison, 0987654 James Monroe, 9876543 John Quincy Adams, 8765432
和共包含26行。
我現在要做的所有事情都只是在文件中讀取。 我嘗試通過使用這個代碼(在主現在)
#include <stdio.h>
#include <stdlib.h>
struct node{
char name[20];
int id;
struct node *next;
}*head;
int main(void){
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
head = temp;
FILE *ifp;
ifp = fopen("AssignmentOneInput.txt", "r");
int c = 0;
while(c<26){
fscanf(ifp, "%s", &temp->name);
fscanf(ifp, "%d", &temp->id);
printf("%d\n", c);
temp = temp->next;
c++;
}
對於輸出,我知道的是,第一名字和所述第一ID被掃描,因爲系統c的值顯示爲0(此時我任意使用c的值來控制fscanf)。但之後,程序崩潰。所以問題必須與temp = temp->next;
編譯好。
我對鏈表很新,所以我真的不知道自己在做什麼。
您的幫助表示感謝!
你必須在每次循環時malloc一個新的節點,你必須設置前一個下一個指向新節點 – pm100 2015-01-26 21:29:01
'fscanf(ifp,「%s」,&temp - > name);'會讀入「George」,而不是「George Washington」 – chux 2015-01-26 21:29:57