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)
Zjistit počet nových příspěvků
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, 30 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