Προς το περιεχόμενο

Ανάγνωση λιστών τύπου struct από αρχείο (C)


feugatos

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά γειά σας,

έχω αυτό το struct:

>
typedef struct _SOLDIER { 
               char ASM[7];
	char Onoma[50];
	char Eponymo[50];
	int meresAdeias;
	int wresYpir;
	struct _SOLDIER *next;
	} SOLDIER;

 

με το οποίο δημιουργώ μια λίστα.

 

αργότερα με μια fprintf με την εξής σύνταξη

>
fprintf(fp, "%s %s %s %d %d\n", tempNode->ASM, tempNode->Onoma, tempNode->Eponymo, tempNode->meresAdeias, tempNode->wresYpir);

 

αποθηκεύω τα δεδομένα της λίστας σε ένα αρχείο.

 

Το πρόβλημά μου είναι το εξής, πως μπορώ να δημιούργήσω ξανά τh λίστα που έχω

αποθηκεύσει στο αρχείο?

 

έχω γράψει αυτή τη συνάρτηση

 

>
void loadListfromFile(char *filename) {
    if ((fp = fopen(filename, "r")) == NULL) return;
    else {
         do {
             SOLDIER *newNode = NULL, *tempNode = NULL;
             newNode = (SOLDIER *)malloc(sizeof(SOLDIER));
             fscanf(fp, "%s %s %s %d %d\n", newNode->ASM, newNode->Onoma, newNode->Eponymo, newNode->meresAdeias, newNode->wresYpir);
             if (!head) head = newNode;
             else {
                    tempNode = head;
                    while(tempNode->next) tempNode = tempNode->next;
                    tempNode->next = newNode;
                    }
                    
             }
             while(!feof(fp));
             fclose(fp);
             }
         }    

 

αλλά δεν βλέπω να λειτουργεί σωστά.

 

μπορεί να βοηθήσει κανείς;

Δημοσ.

Ειλικρινά γιατί ανοίγεις νέο θέμα αφού σου έχω στείλει εγώ προσωπικά την απάντηση και μάλιστα με κώδικα. Δηλαδή τι δεν καταλαβαίνεις από το προηγούμενο θέμα;

Δημοσ.

οκ τελικα το βρηκα η fscanf επρεπε να εχει ως εξης

 

>
fscanf(fp, "%s %s %s %d %d\n", newNode->ASM, newNode->Onoma, newNode->Eponymo, &newNode->meresAdeias, &newNode->wresYpir);

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...