Nacitanie spajaneho zoznamu struktur zo subora (C) - help

Programovacie jazyky, rady, poradňa...
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Nacitanie spajaneho zoznamu struktur zo subora (C) - help

Príspevok od používateľa Tiestik »

Caute chcel som sa spytat ci by ste mi nemohli poradit ?
po stlaceni 'n' sa maju nacitat tie zaznamy a vypisat kolko ich je to mi robi ale je tam niekde chyba lebo pri niektorych mi pise aj viac ako by malo a este tam mam problem s tymi hviezdickami ak vymazem s toho textaku 2 hviezdicky a neham tam jednu ide to ok ale ako nahle su tam 3 tak to pise sam ciary nekonecne
a po stlaceni 'v' to ma vypisat


VOPRED DAKUJEM ZA POMOC

tu je subor z ktoreho to nacita

Kód: Vybrať všetko

***
DE612301
9783161484100
Gesammelte Werke 3. Logik der Forschung
Karl R. Popper
20100508
56432
***
EN3123123
9780061092190
Men at Arms
Terry Pratchett
20101010
45612
***
EN3123123
9780061092190
Men at Arms
Terry Pratchett
20101010
45612
tu je ukazkovy vystup

Kód: Vybrať všetko

n
Nacitalo sa 3 zaznamov
v
1.
Test: ***
signatura: DE612301
isbn: 9783161484100
nazov: Gesammelte Werke 3. Logik der Forschung
autori: Karl R. Popper
datum: 20100508
preukaz: 56432
2.
Test: ***
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
3.
Test: ***
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612

KOD

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

typedef struct kniznica{ //inicializacia struktury
char hviezda[3];
char sig [10];
char ISBN [13];
char nazov [100];
char autor [100];
char datum [8];
char preukaz [8];
struct kniznica *p_dalsi;
}KNIZNICA;

void *nacitaj(KNIZNICA **p_prvy)
{
FILE *fr = NULL;
int i, c, x = 0;
KNIZNICA *p_aktualny, *p_pom;

if ((fr = fopen("kniznica.txt", "r")) == NULL)
{
printf("Zaznamy neboli nacitane\n");
return 0;
}

while ((c = getc(fr)) != EOF)
{
ungetc(c, fr);
if (c = getc(fr) == '*')
x++;
}

rewind(fr);
(*p_prvy) = (KNIZNICA*) malloc(sizeof(KNIZNICA));
p_aktualny = (*p_prvy);
for (i = 1; i <= x; i++){
if (i>1) {
p_pom = (KNIZNICA*) malloc(sizeof(KNIZNICA));
p_aktualny->p_dalsi = p_pom;
p_aktualny = p_pom;
}

fgets(p_aktualny->hviezda, 5, fr);
fgets(p_aktualny->sig, 12, fr);
fgets(p_aktualny->ISBN,15,fr);
fgets(p_aktualny->nazov, 102, fr);
fgets(p_aktualny->autor, 102, fr);
fgets(p_aktualny->datum, 10, fr);
fgets(p_aktualny->preukaz, 10, fr);
p_aktualny->p_dalsi = NULL;

}
printf("Nacitalo sa %d zaznamov\n", x/3);
}

void vypis(KNIZNICA *kniznica)
{
int n = 0;
KNIZNICA *akt;
akt = kniznica;

if (akt == NULL)
{
return;
}

while (akt != NULL) {
n++;
printf("%d.\n", n);
printf("Test: %s", akt->hviezda);
printf("signatura: %s", akt->sig);
printf("isbn: %s", akt->ISBN);
printf("nazov: %s", akt->nazov);
printf("autori: %s", akt->autor);
printf("datum: %s", akt->datum);
printf("preukaz: %s",akt->preukaz);
akt = akt->p_dalsi;
}
}

int main()  // hlavna funkcia
{
int c;
FILE *fr = NULL;
KNIZNICA *kniznica = NULL;

while ((c = getchar()) != 'k'){
switch (c){
case 'n':nacitaj(&kniznica); break;
case 'v':vypis(kniznica); break;
}
}

return 0;
}
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Fabo »

v prvom rade ta musim zdrbat za citatelnost kodu... co to je za blby napad pouzivat typ a premennu rovnake slovo len iny case a este pouzivat rovnake nazvy globalne aj lokalne?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

Bordel ti robí načítanie stringov. Načítaš dĺžky, ktoré v štruktúre vôbec negarantuješ. Napríklad pre hviezdičky načítaš tri znaky, ale v štruktúre máš zadefinovaný dĺžku len tri (char hviezda[3];). To je blbosť, lebo fgets ti nakoniec bacne ešte nulový bajt - zakončovací bajt, ktorý musí byť na konci každého reťazca, to vieme však?
Podobne ISBN, rozhasí ti to celú štruktúru a potom je jasné, že je zle.

Ďalej to počítanie hviezdičiek mi príde divné. Nespoliehal by som na to, že tam budú furt presne tri a iba tam. Čo ak bude hviezdička aj v názve? Zase sa ti to celé skazí.
Skôr by som sa spoliehal na správny formát a načítal pekne všetko čo mám a kašlal na to. A počet záznamov sa tak počíta jednoducho. A aj koniec súboru odchytíš jednoducho.

Kód: Vybrať všetko

typedef struct kniznica_tt { //inicializacia struktury
	char hviezda[8];
	char sig [16];
	char ISBN [16];
	char nazov [128];
	char autor [128];
	char datum [16];
	char preukaz [16];
	struct kniznica_tt *p_dalsi;
}KNIZNICA;

void *nacitaj(KNIZNICA **p_prvy)
{
	FILE *fr = NULL;
	int i, c, x = 0;
	KNIZNICA *p_aktualny, *p_pom;

	if ((fr = fopen("test.txt", "r")) == NULL)
	{
		printf("Zaznamy neboli nacitane\n");
		return 0;
	}


	rewind(fr);
	(*p_prvy) = (KNIZNICA*) malloc(sizeof(KNIZNICA));
	p_aktualny = (*p_prvy);

	while ((c = getc(fr)) != EOF)
    {
        ungetc(c, fr);

        if (x>=1)
        {
            p_pom = (KNIZNICA*) malloc(sizeof(KNIZNICA));
            p_aktualny->p_dalsi = p_pom;
            p_aktualny = p_pom;
        }

        fgets(p_aktualny->hviezda, 7, fr);
        fgets(p_aktualny->sig, 15, fr);
        fgets(p_aktualny->ISBN,15,fr);
        fgets(p_aktualny->nazov, 120, fr);
        fgets(p_aktualny->autor, 120, fr);
        fgets(p_aktualny->datum, 15, fr);
        fgets(p_aktualny->preukaz, 15, fr);
        p_aktualny->p_dalsi = NULL;

        x++;
    }
    printf("Nacitalo sa %d zaznamov\n", x);
}
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Tiestik »

diky moc :)

//autoeditácia príspevku (01 Máj 2014, 20:26)
caute chlopy chcel by som este poradit(najlepsie s ukazkou :))
ze mam dalsiu funkciu napr. do tohto zoznamu.
Ma to robit to ze po stlaceni p %d(cisla od >=1) zadam vsetky veci zo zoznamu signatura atd.. a to cislo ktore zadavam na zaciatku ma priradit ten cely zoznam na poziciu toho cislo co zadam a tie ostatne posunie a ak zadam niake cislo ktore neni v zozname tak to da na posledne

niaka ukazka aby ste to pochopili

Kód: Vybrať všetko

n
v
1.
signatura: DE612301
isbn: 9783161484100
nazov: Gesammelte Werke 3. Logik der Forschung
autori: Karl R. Popper
datum: 20100508
preukaz: 56432
2.
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
3.
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
p 3
1
2
3
4
5
6
v
1.
signatura: DE612301
isbn: 9783161484100
nazov: Gesammelte Werke 3. Logik der Forschung
autori: Karl R. Popper
datum: 20100508
preukaz: 56432
2.
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
3.
signatura: 1
isbn: 2
nazov: 3
autori: 4
datum: 5
preukaz: 6
4.
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

A otázka je aká?
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Tiestik »

no dat napady(ukazku, najlepsie spravene :) ) ako to opravit aby to islo tak ako som pisal ze to ma ist :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

No tak musíš spraviť niečo takéto, či?

Kód: Vybrať všetko

p_pom= malloc...;
napln p_pom...

if( p == 1 )
{
     p_pom->dalsi = kniznica;
     kniznica = p_pom; // treba zmenit pociatok zoznamu
}
else
{
   while( pom->dalsi && zadanyPocet--) // kym mozem a zaroven kym nie som na pozadovanej pozicii (podla toho, co pride skor)
         pom = pom->dalsi;

   prepoj pom a p_pom tak, ako to robis
}
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Hensym »

Ja sa trošku votrem do tejto témy. Ak nevadí. :)
Robím túto istú funkciu, ona funguje, no iba pokiaľ dodržím maximálne dĺžky vstupov (čiže ID 12 znakov, meno 100, a podobne).
Ak dám znakov viac, tak mi v lepšom prípade pretečie buffer (toto je kvôli použitiu fgets, viem), alebo mi napíše, že "p_pred is being used without being initialized", čo absolútne nechápem. Neviem akú spojitosť má inicializácia premennej p_pred s nejakými hodnotami v scanfe.

Kód je:

Kód: Vybrať všetko

void p(LIB *p_prv){
	int poz, i;
	LIB *p_akt = p_prv;
	LIB *p_pred, *p_novy;
	p_novy = (LIB*) malloc(sizeof(LIB));

	scanf("%d\n",&poz);
	for(i = 1; i < poz && p_akt; i++){
		p_pred = p_akt;
		p_akt = p_akt->p_dalsi;
	}

	fgets(p_novy->signatura, 12, stdin);
	fgets(p_novy->isbn, 15, stdin);
	fgets(p_novy->nazov, 102, stdin);
	fgets(p_novy->autori, 102, stdin);
	scanf("%d\n",&p_novy->datum);
	scanf("%d\n",&p_novy->preukaz);

	p_novy->p_dalsi = p_akt;
	p_pred->p_dalsi = p_novy;

}
Chyba s p_pred sa týka posledného riadku.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

Hensym: p_pred by si mal inicializovať na NULL. Čo ak sa vôbec nepohne? (for sa nevykoná, napr ak zadám 1, alebo ak p_akt je NULL)
Po cykle ho treba aj otestovať - ak sa nezmenil(je NULL), tak vkladáš na prvé miesto. Ak sa zmenil, vkladáš zaň.
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Hensym »

Ono to funguje aj bez ošetrenia, aj keď zadám 1 a cyklus sa nevykoná. Vždy to dá na správne miesto, avšak padá to kvôli (ne)inicializácií p_pred.
Skúsil som ho inicializovať na NULL na začiatku, teraz proste napíše ConsoleApplication has stopped working, po nahratí 6 riadkov a pokuse o výpis.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

Hensym napísal:Ono to funguje aj bez ošetrenia, aj keď zadám 1 a cyklus sa nevykoná. Vždy to dá na správne miesto...
Ako by mohlo, keď p_pred nie je nastavené a potom drzo urobíš

Kód: Vybrať všetko

p_pred->p_dalsi = p_novy;
Ukazatele VŽDY inicializuj na NULL. Predídeš tak práve týmto chybám. A podľa mňa ti to padá práve na tom pslednom riadku. Keď p_pred neinicializuješ na NULL, tak dostaneš len warning a niečo to vykoná. Ak ho ale nastavíš na NULL, program správne spadne (pretože dereferencuješ NULL)

Alebo bude chyba niekde ešte vyššie, mimo túto funkciu (Ale táto chyba s poz=1 tam je určite. Ani nemeníš počiatok zoznamu)
Debuguj ;) Vypisuj si postupne niečo a odsleduj, kde to padá a aké hodnoty majú premenné.
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Tiestik »

...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa BX »

p=1 funguje, len nezmeníš ukazateľ na prvý prvok. Síce to prepojíš správne, ale iba v tej funkcií a mimo nej sa ukazatel na knižnicu nezmení. Ten nový prvok tam teda je, ale už nikdy sa k nemu nedostaneš.
Potrebuješ dať knižnicu do funkcie ako in/out parameter takže dve hviezdičky a vo funkcií dereferencovať, aby sa zmena prejavila aj po vykonaní funkcie.

Ďalej

Kód: Vybrať všetko

while (pom->p_dalsi && pocet-- != NULL)
toto je totálna debilina, prečo porovnávaš pocet s NULL? A čo je to vôbec ten počet? Kde ho nastavuješ? Veď je furt 1, keď ho na začiatku nastavíš na jedna. Ty máš predsa znižovať to p, aby si sa dostal na p-tý prvok. (a keďže while končí na p=0, ešte pred tým ho zníž o jedna, aby ti nepreliezol o jeden prvok naviac)
No a posledná vec, zle som napísal - nemáš to prepájať tak, ako to robíš, pretože to robíš zle.
Vkladáš do stredu spojáku, medzi dva prvky. Potrebuješ preto adresu oboch a aj toho tretieho, ktorý medzi ne pôjde.
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Hensym »

Teraz som na tom asi takto:

Kód: Vybrať všetko

        for(i = 1; i < poz && p_akt; i++){    // tento cyklus sa vykona, ak vstup nie je 1 (neriesim, toto je v poriadku)
		p_pred = p_akt;
		p_akt = p_akt->p_dalsi;
	}
	if(poz == 1){
		for(i = 1; p_akt != NULL; i++){     // tento cyklus sa vykona, ak vstup JE 1
			p_akt = p_akt->p_dalsi;      // p_akt na zaciatku ukazuje na prvu strukturu, 
		}                                            // a teda tymto cyklom kazdy zaznam posuvam o jednu poziciu dalej, alebo?
	}

	if(poz == 1){                                    // ak je vstup 1, novy zaznam ukladam na prve miesto (pricom ostatne zaznamy
		p_novy = p_prv;                       // by uz mali byt posunute (1 na 2, 2 na 3, 3 na 4)
	}
	else {
		p_novy->p_dalsi = p_akt;
		p_pred->p_dalsi = p_novy;
	}

	fgets(p_novy->signatura, 12, stdin);
	fgets(p_novy->isbn, 15, stdin);
	fgets(p_novy->nazov, 102, stdin);
	fgets(p_novy->autori, 102, stdin);
	scanf("%d\n",&p_novy->datum);
	scanf("%d\n",&p_novy->preukaz);
Lenže pri zadaní 1 mi nový záznam skutočne uloží na prvú pozíciu, ale ostatné sa nepohnú, a teda pôvodný prvý záznam iba prepíšem. :/
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Tiestik »

prosim vas AKO spravim aby ked nacitam rok tak aby sa to vo vypise zmenilo o 1 rok cely

d predstavuje ten nacitany rok
tento kod je tak ze sa to zmeni na to iste cislo, ale ja chcem aby sa zvysilo o rok
Napr. 20130101 zmení na 20140101

Kód: Vybrať všetko

while (pomocna != NULL)
	{
		if ((pomocna->datum) <= d)
		{
			pocet_zaznamov++;
			pomocna->datum= d;
		}
		pomocna = pomocna->p_dalsi;
	}
dik
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa pcsiete »

Kód: Vybrať všetko

int iDatum = atoi(pomocna->datum);
iDatum += /* počet rokov */ * 10000;
pozor, bezpečne funguje iba na roky.
Tiestik
Amateur
Amateur
Príspevky: 24
Registrovaný: 26 apr 2014, 18:49

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Tiestik »

a Ako spravim : D ze ked nacitam cislo a to cislo je rovnake ako preukaz tak sa vypise len preukaz(cely zaznam, kde je ten preukaz)

//autoeditácia príspevku (03 Máj 2014, 12:52)
Tak uz som to spravil len maly problemik, funguje len vypisuje pre vsetky zaznamy napr. mam 3 zaznamy a v 2 su rovnake cisla , ak nacitam to cislo co je 2x tak ot vyhlada ale aj hlada pre to 3 a tam vypise ze zadane bala bla ...

code

Kód: Vybrať všetko

scanf("%d", &c);
	while (akt != NULL) {
		if (c == (akt->preukaz)) {
			n++;
			printf("%d.\n", n);
			printf("signatura: %s", akt->sig);
			printf("isbn: %s", akt->ISBN);
			printf("nazov: %s", akt->nazov);
			printf("autori: %s", akt->autor);
			printf("datum: %d\n", akt->datum);
			printf("preukaz: %d\n", akt->preukaz);
			
		}
		else
			printf("Pre dane cislo preukazu neevidujeme vypozicky\n");
		akt = akt->p_dalsi;
	}

Kód: Vybrať všetko

n
Nacitalo sa 2 zaznamov
h
45612  // toto je to nacitane cislo 
Pre dane cislo preukazu neevidujeme vypozicky // a toto je to co tam nechcem, chcem to len pripade ze ziadne cislo sa neshoduje a chcem to len raz nie tolko krat kolko je x zaznamov
1.
signatura: EN3123123
isbn: 9780061092190
nazov: Men at Arms
autori: Terry Pratchett
datum: 20101010
preukaz: 45612
dik
_Michal_
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 17
Registrovaný: 03 jan 2012, 22:46

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa _Michal_ »

Čauko, aj ja som tvoj spolužiak :D
Stačí aby si si dal mimo while cyklu podmienku pre n rovné 0.

Kód: Vybrať všetko

if (n == 0)
  printf("Pre dane cislo preukazu neevidujeme vypozicky\n");
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa Hensym »

Viete mi poradiť, čo je zlé na tomto?
Funkcia načíta string zo vstupu (meno), a všetky záznamy obsahujúce toto meno vymaže.

Kód: Vybrať všetko

	char vstup[102];
	int count = 0;
	LIB *p_akt = p_prv->p_dalsi;    // p_prv je definovaný v hlavičke funkcie, prvá štruktúra
	LIB *p_pred = p_prv;
	LIB *p_found = NULL;              // štruktúra v ktorej sa našla zhoda

	scanf("%d",vstup);	
	while(p_akt != NULL){
		if(strstr(p_akt->autori, vstup)){     // ak sa hodnota autori zo štruktúry rovná vstupu
			p_found = p_akt;                // tak uložím pointer na túto štruktúru
			p_pred->p_dalsi = p_akt->p_dalsi;      // predošlú štruktúru prepojím priamo s nasledujúcou
			p_akt = p_akt->p_dalsi;              // aktuálnu posuniem ďalej
			free(p_found->signatura);           // štruktúru so zhodou mažem
			free(p_found->isbn);
			free(p_found->nazov);
			free(p_found->autori);
			free(p_found);
			count++;             // zvyšujem počet zhôd
		}
		else {                            // ak sa zhoda nenašla
			p_pred = p_akt;      // predošlú posuniem
			p_akt = p_akt->p_dalsi;    // aktuálnu posuniem
		}
	}
	printf("Vymazalo sa %d zaznamov\n",count);
Vždy mi to vypíše Vymazalo sa 0 záznamov.

// už to mám, ja kretén som mal v scanfe na string %d...
Inak, s tým mazaním mi to písalo chybu, no pokiaľ mažem iba priamo "free(p_found)", tak to ide, a aj skutočne tá štruktúra zmizne. Stačí to, alebo sa pamäť reálne vymaže iba na oko?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8217
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Nacitanie spajaneho zoznamu struktur zo subora (C) - hel

Príspevok od používateľa harrison314 »

Kód: Vybrať všetko

 free(p_found->signatura);           // štruktúru so zhodou mažem
         free(p_found->isbn);
         free(p_found->nazov);
         free(p_found->autori);
OMG, co ta v tej skole ucia?
Prosto dealokujes len to co si si alokoval.
Napísať odpoveď