Nevedel by mi niekto poradit kde by mohla byt chyba ?
Skusal som to ale vypisuje to dost velke halusky.
Kód: Vybrať všetko
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct struktura { /* definovanie struktury */
char nazov_knihy[100];
char autor[100];
char vydavatelstvo[50];
int rok;
double cena;
int pocet_kusov;
char popis[200];
struct struktura *dalsi;
} STRUKTURA;
int main()
{
int i, n,c;
STRUKTURA *p_prv, *p_akt;
FILE *fr ;
n = 0;
if (p_prv == NULL) {
printf("Spajany zoznam uz raz bol vytvoreny.\n");
return 1;
}
if ((fr = fopen("SUBOR.TXT", "r")) == NULL){
printf("Subor sa nenasiel\n");
getchar();
return 1;
}
/* nacita a ulozi prvy zaznam */
if((p_prv = (STRUKTURA *) malloc(sizeof(STRUKTURA))) == NULL){
printf("Malo pamate.\n");
return 1;
}
while (feof(fr) == 0){
if ((fgetc(fr)) == '*')
n++;
}
rewind(fr);
fgetc(fr);
fgets(p_prv->nazov_knihy, 100, fr);
fgets(p_prv->autor, 100, fr);
fgets(p_prv->vydavatelstvo, 100, fr);
fscanf(fr, "%d", &p_prv->rok);
fscanf(fr, "%lf", &p_prv->cena);
fscanf(fr, "%d", &p_prv->pocet_kusov);
fgets(p_prv->popis, 200, fr);
p_akt = p_prv;
/* nacita a ulozi ostatne zaznamy */
while (feof(fr) == 0){
p_akt->dalsi = (STRUKTURA *) malloc(sizeof(STRUKTURA));
p_akt = p_akt->dalsi;
fgetc(fr);
fgets(p_prv->nazov_knihy, 100, fr);
fgets(p_prv->autor, 100, fr);
fgets(p_prv->vydavatelstvo, 100, fr);
fscanf(fr, "%d", &p_prv->rok);
fscanf(fr, "%lf", &p_prv->cena);
fscanf(fr, "%d", &p_prv->pocet_kusov);
fgets(p_prv->popis, 200, fr);
}
p_akt->dalsi = NULL;
printf("pocet zaznamov je %d\n",n);
printf("Nazov knihy: %s\n", p_akt->nazov_knihy);
printf("Autor: %s\n", p_akt->autor);
printf("Vydavatelstvo: %s\n", p_akt->vydavatelstvo);
printf("Rok: %d\n", p_akt->rok);
printf("Cena: %lf\n", p_akt->cena);
printf("Pocet kusov: %d\n", p_akt->pocet_kusov);
printf("Popis: %s\n", p_akt->popis);
printf("\n");
return 0;
}