C, de la lecture du fichier dans la structure

J'ai eu du mal avec cette pendant des jours et je ne peux pas comprendre pourquoi ça ne fonctionne pas.

Je suis en train de lire les numéros de fichier avec des nombres écrits comme ceci:

0 2012 1 1 2000.000000
0 2012 1 1 3000.000000
1 2012 1 1 4500.000000

ma structure:

struct element{

        int id;
        int sign;
        int year;
        int month;
        double amount;

        struct element *next;


};

struct queue{
    struct element *head;
    struct element *tail;
    struct element *head2; 
    struct element *temp;  
    struct element *temph; 

    int size;
};

(head2, temp et temph sont utilisés dans le tri de la structure)

et de la lecture à partir d'un fichier:

void read_str(struct queue *queue){

    FILE *reads;

    char filename[40];
    int temp;

    printf("Type in name of the file\n");
    scanf("%s",&filename);
    reads=fopen(filename, "r");
    if (reads==NULL) {
        perror("Error");
        return 1;
    }
    else { 
        while(!feof(reads)) {
            struct element *n= (struct element*)malloc(sizeof(struct element));             
            fscanf(reads,"%d %d %d %d %lf", n->id, n->sign, n->year, n->month, n->amount);                  
            n->next=NULL;                   

            if(queue->head ==NULL) {
                queue->head=n;
            }
            else {
                queue->tail->next=n;
            }

            queue->tail=n;
            queue->size++;                  

        }           
    }
}

Je peut changer la façon dont les données de recherche dans un fichier en changeant la fonction qui écrit, mais je ne pense pas que ce soit le problème. Je suppose que je suis en utilisant malloc dans un mauvais sens.

OriginalL'auteur ozech | 2012-07-01