Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct zoznam
- {
- char *pomlcky;
- char *sign;
- char *isbn;
- char *kniha;
- char *autor;
- char *datum;
- char *preukaz;
- struct zoznam *dalsi;
- };
- typedef struct zoznam ZOZNAM;
- ZOZNAM *nacit(void) //funkcia N
- {
- FILE *fr;
- int pocetzaz=0;
- char x;
- ZOZNAM *pom = NULL;
- fr=fopen ("kniznica.txt", "r"); //otvori subor na citanie
- if (fr == NULL) //kontrola ci sa podarilo otvorit subor
- {
- printf("Zaznamy neboli nacitane\n"); //ak nie, vypise Zaznamy neboli nacitane
- return 0;
- }
- while((x=getc(fr))!=EOF) //zisti pocet zaznamov
- {if (x=='-')
- {x=getc(fr);
- if (x=='-')
- { x=getc(fr);
- if(x=='-')
- pocetzaz++;}}}
- printf("Nacitalo sa %d zaznamov\n", pocetzaz);
- rewind(fr); //nastavi indikator na zaciatok suboru
- char riadok[128];
- ZOZNAM *akt, *prvy;
- prvy = akt = NULL;
- while((x=getc(fr))!=EOF)
- {
- ungetc (x,fr);
- pom = malloc(sizeof(ZOZNAM));
- fgets(riadok, sizeof(riadok), fr);
- pom->pomlcky = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->sign = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->isbn = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->kniha = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->autor = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->datum = strdup(riadok);
- fgets(riadok, sizeof(riadok), fr);
- pom->preukaz = strdup(riadok);
- pom->dalsi =NULL;
- if(prvy == NULL)
- {
- akt = prvy = pom;
- }
- else
- {
- akt = akt->dalsi = pom;
- }
- }
- fclose(fr); //zatvori subor
- //pocet=pocetzaz;
- return prvy;
- }
- void vypis(ZOZNAM *prvy) //funkcia N
- {
- int i=1;
- ZOZNAM *akt;
- for(akt = prvy; akt ; akt=akt->dalsi){
- printf("%d.\n", i); i++;
- printf("signatura: %s", akt->sign);
- printf("isbn: %s", akt->isbn);
- printf("nazov: %s", akt->kniha);
- printf("autori: %s", akt->autor);
- printf("datum: %s", akt->datum);
- printf("preukaz: %s", akt->preukaz);
- }
- }
- void pridaj(ZOZNAM *prvy) //funkcia P
- {
- int c1;
- int i = 1;
- char riadok[128];
- scanf("%d", &c1);
- if (prvy == NULL) return;
- ZOZNAM *pom = NULL;
- ZOZNAM *akt = prvy;
- pom = malloc(sizeof(ZOZNAM));
- gets(riadok);
- pom->pomlcky = strdup(riadok);
- gets(riadok);
- pom->sign = strdup(riadok);
- gets(riadok);
- pom->isbn = strdup(riadok);
- gets(riadok);
- pom->kniha = strdup(riadok);
- gets(riadok);
- pom->autor = strdup(riadok);
- gets(riadok);
- pom->datum = strdup(riadok);
- gets(riadok);
- pom->preukaz = strdup(riadok);
- pom->dalsi =NULL;
- if(prvy == NULL)
- {
- akt = prvy = pom;
- }
- else
- {
- akt = akt->dalsi = pom;
- }
- while (akt)
- {
- // nasli sme poziciu alebo pridame na koniec
- if (i - 1 == c1 || akt->dalsi == NULL)
- {
- ZOZNAM *dalsi = akt->dalsi;
- ZOZNAM *novy = (ZOZNAM *)malloc(sizeof(ZOZNAM)); // wtf nechapem zadaniu
- akt->dalsi = novy;
- novy->dalsi = dalsi;
- break;
- }
- akt = akt->dalsi;
- i++;
- }
- }
- int main()
- {
- ZOZNAM *pom = NULL;
- double *pole = NULL;
- char c;
- while ((c = getchar()) != 'k')//nacitava znaky pokial nepride k
- {
- if (c == 'n') pom=nacit(); //volanie funkcie N
- if (c == 'v') vypis(pom); //volanie funkcie V
- if (c == 'p') pridaj(pom); //volanie funkcie P
- if (c == 'z'); //volanie funkcie Z
- if (c == 'h'); //volanie funkcie H
- if (c == 'a'); //volanie funkcie A
- }
- free(pole); //dealokuje pole
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement