Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS
- #endif
- #include <stdio.h> //Pouzite kniznice
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <ctype.h>
- typedef struct pozicka{ //Struktura
- char sign[15];
- char isbn[17];
- char kniha[105];
- char autor[105];
- int datum;
- int cislo;
- struct pozicka *dalsi;
- } POZICKA;
- POZICKA * funkcia_n(POZICKA *p_prv) { //Nacitanie zaznamov do zoznamu f vracia smernik na 1. zaznam
- if (p_prv != NULL) { //ak smerník niekde ukazuje uvolni pamet
- free(p_prv);
- }
- FILE *fr; //smernik typu file
- char nic[70], c; //Deklaracia ukazovatela na smernik
- POZICKA *p_akt; // deklarovany smernik na aktualny zaznam
- int n = 0, x, i;
- fr = fopen("kniznica.txt", "r"); //Otvorenie suboru na citanie
- if (fr == NULL) { //Osetrenie neotvorenia suboru
- printf("Zaznamy neboli nacitane\n");
- return 0;
- }
- if ((c=fgetc(fr)) != EOF) { //neviem ako to ošetrit...
- while ((fgets(nic, 70, fr)) != NULL) { //Citanie po riadkoch po koniec suboru
- fgets(nic, 70, fr);
- fgets(nic, 70, fr);
- fgets(nic, 70, fr);
- fgets(nic, 70, fr);
- fscanf(fr, "%d\n", &x);
- fscanf(fr, "%d\n", &x);
- n++; //Pocet zaznamov
- }
- if ((p_prv = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) { //smernik ukazuje na prvy vytvoreny zaznam
- printf("Malo pamate.\n");
- return 0;
- }
- rewind(fr);
- fgets(nic, 20, fr);
- fgets(p_prv->sign, 15, fr); // do prveho zaznamu sa ukladaju položky zo suboru
- fgets(p_prv->isbn, 17, fr);
- fgets(p_prv->kniha, 105, fr);
- fgets(p_prv->autor, 105, fr);
- fscanf(fr, "%d", &p_prv->datum);
- fscanf(fr, "%d", &p_prv->cislo);
- //p_prv->p_dalsi = NULL; // ak bude iba 1 zaznam pravdepodobre toto by tu malo byt....
- p_akt = p_prv; //smernik aktualna ukazuje tam kde prvy
- for (i = 2; i <= n; i++) {
- if ((p_akt->dalsi = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) { //vytvorenie druheho zaznamu
- printf("Malo pamate.\n");
- return 0;
- }
- p_akt = p_akt->dalsi; // p_akt ukazuje na rovnaku premennu ako p_akt->dalsi
- fgets(nic, 20, fr);
- fgets(nic, 20, fr);
- fgets(p_akt->sign, 15, fr); //do druheho zaznamu sa ukladaju polozky
- fgets(p_akt->isbn, 17, fr);
- fgets(p_akt->kniha, 105, fr);
- fgets(p_akt->autor, 105, fr);
- fscanf(fr, "%d", &p_akt->datum);
- fscanf(fr, "%d", &p_akt->cislo);
- }
- printf("Nacitalo sa %d zaznamov\n", n);
- p_akt->dalsi = NULL; //druhy zaznam je koniec zoznamu
- return p_prv; // vrateny smernik na zaciatok zoznamu
- }
- return 0;
- }
- POZICKA * funkcia_v(POZICKA *p_prv) { //funkcia na vypis vracia smernik na aktualny zaznam
- if (p_prv != NULL) {
- //neviem ako to osetrit...
- POZICKA *p_akt;
- p_akt = p_prv; //aktualny smernik ukazuje na prvy
- int x=0;
- while (p_akt != NULL) { // pokial aktualny nieje na konci zoznamu
- printf("%d.\n", ++x);
- printf("signatura: %s", p_akt->sign);
- printf("isbn: %s", p_akt->isbn);
- printf("nazov: %s", p_akt->kniha);
- printf("autori: %s", p_akt->autor);
- printf("datum: %d\n", p_akt->datum);
- printf("preukaz: %d\n", p_akt->cislo);
- p_akt = p_akt->dalsi;
- }
- return p_akt; // vrateny smernik na aktualny zaznam
- }
- return 0;
- }
- void funkcia_p(POZICKA *p_akt) { // funkcia na pridanie zaznamu do zoznamu
- //este nefunguje
- int poz; //deklaracie
- scanf("%d", &poz);
- POZICKA *p_nov; // nový smernik typu pozicka
- if ((p_nov->dalsi = (POZICKA *)malloc(sizeof(POZICKA))) == NULL) { //vytvorenie dynamickeho pola a test
- printf("Malo pamate.\n");
- return;
- }
- p_nov->sign = poz; //neviem ako urcit poziciu kde sa ma zaznam pridat....
- scanf("%s", p_nov->sign); //po doplneni tychto zaznamov by sa funkciou v mali vypisat
- scanf("%s", p_nov->isbn);
- scanf("%s", p_nov->kniha);
- scanf("%s", p_nov->autor);
- scanf("%d", p_nov->datum);
- scanf("%d", p_nov->cislo);
- }
- void funkcia_z() { //funkcia kt vymazuje zvolene zaznamy zo zoszanu podla autora
- char pole[30]; // aj v podretazci
- int i = 0;
- scanf("%s", pole);
- while(pole[i])
- {
- putchar (toupper(pole[i])); //vsetky pismena velke
- i++;
- }
- printf("\n");
- //if(char *strstr(char *s1, char *s2)!= NULL)
- }
- void funkcia_h() {
- }
- void funkcia_a() {
- }
- int main() {
- char volba;
- POZICKA *p_prv=NULL, *p_akt=NULL;
- do {
- volba = getchar();
- switch (volba) {
- case 'n': p_prv = funkcia_n(p_prv); break;
- case 'v': p_akt = funkcia_v(p_prv); break; //Volanie funkcii
- case 'p': funkcia_p(p_akt); break;
- case 'z': funkcia_z(); break;
- case 'h': funkcia_h(); break;
- case 'a': funkcia_a(); break;
- }
- } while (volba != 'k');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement