Listy jednokierunkowe a pliki

0

Witam!
Jestem początkującym programistą. Mam do napisania program, który pozwala na dodawanie aut do bazy danych - muszę wykorzystać listy jednokierunkowe i pliki. W moim przypadku dodaję nowe auto na początek listy.
Napisałem następujący kod:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 50

struct lista_aut_w_salonie
{
char marka[N];
char model[N];
int rokprodukcji;
double pojemnoscsilnika;
char wersjanadwozia[N];
char wyposazenie[N];
char VIN[N];
struct lista_aut_w_salonie *nast;
};
typedef struct lista_aut_w_salonie lista;

void dodaj_auto(char *s)
{
FILE *f;
f=fopen(s,"a+");
if(f==NULL)
{	
printf("Nie mozna otworzyc zadanego pliku\n");
}
lista *pocz=NULL;
lista *t=NULL;
fread(pocz,sizeof(lista),1,f);
lista *nowy;
nowy=(lista*)malloc(sizeof(lista));
printf("Prosze podac marke auta\n");
gets(nowy->marka);
printf("Prosze podac model\n");
gets(nowy->model);
printf("Prosze podac rok produkcji auta\n");
scanf("%d",&nowy->rokprodukcji);
printf("Prosze podac pojemnosc silnika\n");
scanf("%lf",&nowy->pojemnoscsilnika);
printf("Prosze podac wersje nadwozia\n");
gets(nowy->wersjanadwozia);
printf("Prosze podac wersje wyposazenia\n");
gets(nowy->wyposazenie);
printf("Prosze podac numer VIN\n");
gets(nowy->VIN);
nowy->nast=pocz;
fwrite(nowy,sizeof(lista),1,f);
fclose(f);
}

int main()
{
char s[N];
printf("Prosze podac lokalizacje pliku\n");
gets(s);
dodaj_auto(s);
return 0;
} 

Mój problem polega na tym, że program wypisuje zupełne krzaki

Przykładowy wypis do pliku:

Audi
 > s\AMD APP\bin\x86;C:\Windows\system32;C:\WA2
 ws;C:\Windows\System32\Wbem;C:\Windows\System3Ü     .0
 erShell\v1.0\;C:\Program Files\ATI TechnologieDeluxe
 E\Core-Static PATHEXT=.COM;.EXE;.BAT;.CMD;AAA23
 BE;.JS;.JSE;.WSF;.WSH;.MSC PROCESSOR_ARCHITEC

Proszę o pomoc.

dodanie znacznika <code class="c"> - fp

0

Zapoznaj się z pojęciem formatowania kodu. Po poprawianiu zgodnie z jakimikolwiek przyzwoitymi regułami - prawie gwarantowane że sam znajdziesz błąd.

2

miliardowy post na forum odnośnie zapisywania list do plików... chyba muszę przyspieszyć pracę nad artem.

Pierwsza zasada zapisywania list do pliku:
Nie zapisuj wskaźników do pliku. Zapisuj tylko dane a listę podczas wczytywania buduj dynamicznie.

Jeśli nie rozumiesz tego co napisałem wyżej, nie bierz się za programowanie dopóki nie przeczytasz jakiegoś kursu. Bo przy każdym problemie będziesz przychodził na forum a forumowicze na każdy twój post odpowiedzą "nie bierz się za programowanie dopóki nie przeczytasz jakiegoś kursu".

1 użytkowników online, w tym zalogowanych: 0, gości: 1