Už nějakou dobu řeším problém na svém programu a stále na to nemůžu přijít. Při ukládání spojového seznamu do souboru se mi jako poslední položka ve struktuře se vypíše např cesty k ovladačům mé grafické karty a podobné nesmysly. Prostě poslední položka je naprosto nesmyslná.
Poradí mi někdo, jak se toho mám zbavit??
Moje struktura:
typedef struct prvek
{
char nazev[50];
char autor[30];
int rok;
char vydavatel[50];
struct prvek *back;
struct prvek *next;
}PRVEK;
Uložení struktury do souboru:
f=fopen("soubor.bin", "wb+");
for (p = head; p!= NULL; p=p->next)
{
fwrite(p->nazev,50,1,f);
fwrite(p->autor,30,1,f);
fwrite(&p->rok,sizeof(int),1,f);
fwrite(p->vydavatel,50,1,f);
fclose(f);
}
Načtení ze souboru:
if((f = fopen("soubor.bin", "rb+"))!=NULL)
{
while(!feof(f))
{
pridej(nacteni(f));
}
fclose(f);
}
--------------------
PRVEK *nacteni(FILE *f)
{ PRVEK *p;
p = (PRVEK *)
malloc( sizeof ( PRVEK ) );
if (p == NULL)
{
printf("Nelze alokovat pamet.\n");
exit( 1 );
}
fread(p->nazev,50,1,f);
fread(p->autor,30,1,f);
fread(&p->rok,sizeof(int),1,f);
fread(p->vydavatel,50,1,f);
p->next = NULL;
return p;
}
-----------------
void pridej( PRVEK *e)
{
PRVEK *p;
if (head == NULL)
{
head = e;
return;
}
for (p = head; p->next != NULL; p = p->next);
p->next = e;
}
Fórum › C / C++
Problém se vstupem a výstupem ze souboru v C

Mozno ze je to len preklep ale v tomto kode volas fclose v cykle takze uz pri 2. zapise je subor zatvoreny;
Ak chces nahodou donutit vyprazdnenie cache na disk tak na to je tu fflush() (fclose vyprazdnenie aj tak negarantuje)

Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×






























































Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 9 hostů
Podobná vlákna
(ne)Problém s výstupem — založil Hansel
Problém s výstupem — založil Nefaritus
Problem s ciselnym vystupem / C++ — založil Ondrej91
Problem se vstupem do programu — založil vyhnanek
Kalkulačka v C s nejednoznačným vstupem — založil Jan
Moderátoři diskuze