Односвязный список: считывание значений из файла - C (СИ)
Формулировка задачи:
Доброго времени суток! Пожалуйста, подскажите в чем может быть проблема. Есть односвязный список, считываю значения из файла, но значения почему-то всегда последнее... Вот код программы.
Содержимое файла из которого считывается:
A B 2
C D 3
E F 4
Помогите пожалуйста.
#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;
}Решение задачи: «Односвязный список: считывание значений из файла»
textual
Листинг программы
tmp->a = a; tmp->b = b;