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
45612Kó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: 45612KOD
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;
}