2017-06-21 53 views
0

我想從文件中插入一個簡單的鏈接列表。你 傢伙有任何想法,爲什麼該功能不會插入我的 文件中的最後一行?在簡單鏈表中插入沒有得到最後一行

這是文件:

  • 10,Ghidul Ciberbobocului,斯坦的Daria,3,波佩斯庫馬太,約內斯庫Gigel,Ilinca拉杜,100.5
  • 2,彈簧IT,Mirodene克里斯蒂娜,4, Dumitru Mihai,Vasiliu Valentin,Balasa Silvia,Dumitru Ion,400。
  • 89,Serile teatrului studentesc,Petre的離子,2,尼古拉·拉馬納,斯坦阿爾貝託,1000
  • 1,輔導,Petre的米魯娜,2,博德克里斯蒂娜,Angelescu保羅,500.5
  • 11,IT巨星,Ciurea離子,2,Ionescu的喬治亞娜,Neagu比安卡,100.6

我的代碼:

struct Proiect { 
    int id; 
    char* numeProiect; 
    char* numeCoordonator; 
    unsigned int nrStudenti; 
    char** studenti; 
    float costInscriere; 
}; 

struct nodLista { 
    Proiect proiect; 
    nodLista *next; 
}; 

nodLista* inserareNod(nodLista *first, Proiect p) { 
    nodLista* newNode = new nodLista; 
    newNode->next = NULL; 
    newNode->proiect = p; 

    if (!first) { 
     return newNode; 
    } 

    nodLista* aux = first; 
    while (aux->next) { 
     aux = aux->next; 
    } 

    aux->next = newNode; 
    printf("%d\n", aux->proiect.id); 
    return first; 
} 

void main() { 
    nodLista* first = NULL; 
    Proiect proiect; 


    FILE *f = fopen("proiecte2.txt", "r"); 
    char line[150]; 
    int nrProiecte = 0; 
    if (f) { 
     while (fgets(line, sizeof(line), f)) { 
      nrProiecte++; 
     } 
     printf("Nr proiecte: %d",nrProiecte); 
     fclose(f); 
    } 
    else { 
     printf("Fisierul nu a fost gasit"); 
    } 

    f = fopen("proiecte2.txt", "r"); 
    char *token[150], sep_list[] = ","; 
    Proiect* listaProiecte; 
    listaProiecte = (Proiect*)malloc(nrProiecte * sizeof(Proiect)); 
    int i = 0; 

    if (f) { 
     while(fgets(line, sizeof(line), f)) { 
      token[0] = strtok(line, sep_list); 
      listaProiecte[i].id = atoi(token[0]); 


      first = inserareNod(first, listaProiecte[i]); 
      i++; 
     } 

    } 
    else printf("Fisierul nu aputut fi deschis"); 

} 

輸出:它僅顯示10個,2個, 89和1.

回答

0

您是否在此函數中打印了打印內容,以檢查它是否正確執行了這一操作?

while(fgets(line, sizeof(line), f)) { 
      token[0] = strtok(line, sep_list); 
      listaProiecte[i].id = atoi(token[0]); 


      first = inserareNod(first, listaProiecte[i]); 
      i++; 
     } 
+0

我只是在這個函數裏面打印,它讀取所有的行。 – Maria

+0

好吧,我認爲這是正確的。我只是在紙上做了這件事,除了printf本身,它工作正常。您始終打印「輔助」。當您放入最後一個元素時,您正在打印元素 ' 例如: 插入:** 89 ** 當前輔助時間:**輔助= 2 ** 要插入的元素:** aux - > next = 89 ** 列表狀態:** 10 - > 2 - > 89 - > null ** printf(... aux)// **輸出:2 ** ' 所以我認爲你永遠不會達到最後元素雖然打印,但元素插入正確。做另一項功能打印 –

+0

你是對的。謝謝 !! – Maria

相關問題