Односвязный список: считывание значений из файла - C (СИ)

Формулировка задачи:

Доброго времени суток! Пожалуйста, подскажите в чем может быть проблема. Есть односвязный список, считываю значения из файла, но значения почему-то всегда последнее... Вот код программы.
#include <stdio.h>
 
typedef struct cart {
    char* a;
        char* b;
        int c;
    struct cart *next;
} cart;
 
FILE* file;
cart* head = NULL;
void push(cart **head, char* a, char* b, int c);
 
void readthefile(cart **head);
 
int main(int argc, char *argv[])
{
        readthefile(&head);
        while(head != NULL) {
                printf("%s %s %d\n", head->a, head->b, head->c);
                head = head->next;
        }
    return 0;
}
 
void readthefile(cart **head) {
        file = fopen("1.txt", "r");
        char* a = (char*)malloc(20 * sizeof(char));
        char* b = (char*)malloc(20 * sizeof(char)); 
        int c;
        while(fscanf (file, "%s%s%d", a, b, &(c)) != EOF){
        
        printf("%s %s %d\n", a, b, c);
                push(head, a, b, c);
    
        }
        
}
 
void push(cart **head, char* a, char* b, int c) {
    cart *tmp = (cart*) malloc(sizeof(cart));
        tmp->a = a;
        tmp->b = b;
        tmp->c = c;
    tmp->next = (*head);
    (*head) = tmp;
}
Содержимое файла из которого считывается: A B 2 C D 3 E F 4 Помогите пожалуйста.

Код к задаче: «Односвязный список: считывание значений из файла - C (СИ)»

textual
tmp->a = a;
tmp->b = b;
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

9   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ