2017-06-21 7 views
0

ファイルから単純にリンクされたリストに挿入しようとしています。 私の ファイルに最後の行が挿入されない理由はありますか?単純なリンクリストの挿入が最後の行を取得しない

これはファイルである:

  • 10、Ghidul Ciberbobocului、スタン・ダリア、3、ポペスクマテイ、イオネスクGigel、Ilincaラドゥ、100.5
  • 2、春IT、Mirodeneクリスティーナ、4、 Dumitru Mihai、Vasiliu Valentin、Balasa Silvia、Dumitru Ion、400。
  • 89、Serileのteatruluiのstudentesc、ペトレイオン、2、ニコラエラモーナ、スタン・アルベルト1000
  • 1、指導、ペトレMiruna、2、ボーデクリスティーナ、Angelescuポール、500.5
  • 11、ITフェスト、Ciureaイオン、2、イオネスクジョージアナ、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自体を除いて正常に動作します。あなたは常に "aux"を印刷しています。最後の要素を配置すると、要素の後ろに の要素を印刷しています。 例: 挿入:** 89 ** 現在のAUX後:** AUX = 2 ** 挿入する要素:** aux - > next = 89 ** リストの状態:** 10 - > 2 - > 89 - > null ** printf(... aux)// **出力:2 ** 要素が正しく挿入されています。印刷する別の機能を実行してください –

+0

あなたは正しいです。ありがとうございました !! – Maria

関連する問題