Problém se vstupem a výstupem ze souboru v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém se vstupem a výstupem ze souboru v C – C / C++ – Fórum – Programujte.comProblém se vstupem a výstupem ze souboru v C – C / C++ – Fórum – Programujte.com

 

Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
22. 6. 2009   #1
-
0
-

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;

}

Nahlásit jako SPAM
IP: 193.84.36.–
nikto
~ Anonymní uživatel
24 příspěvků
23. 6. 2009   #2
-
0
-

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)

Nahlásit jako SPAM
IP: 217.118.98.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

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 se vstupem do programu — založil vyhnanek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý