×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: C
Posted by: Damian Pytkowski
Added: May 2, 2016 8:46 PM
Modified: May 14, 2016 11:13 AM
Views: 13
Ksiazka adresowa w tablicy struktur - wczytywanie od użytk, wyświetleanie, zapis do pliku
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define LICZBA 3
  5. typedef struct{
  6.     char nazwisko[20];
  7.     int kierunkowy;
  8.     char numer[9];
  9.     }ksiazka;
  10. void wezDane(ksiazka dane[], int i);
  11. void wyswietlDane(ksiazka dane[],int max);
  12. void zapiszNaDysku(ksiazka dane[],char *gdzie,int max);
  13. void main()
  14. {
  15.    ksiazka spis[50];
  16.    int i=0,wybor;
  17.    printf("1) Dopisz numer\n2) Wyswietl numery\n3) Zapisz\n0) Wyjdz\n");fflush(stdin);
  18.    while(wybor){
  19.         printf("\nWybierz polecenie: ");fflush(stdin);
  20.         scanf("%d",&wybor);
  21.         switch(wybor){
  22.             case 1: wezDane(spis,i);i++;break;
  23.             case 2: wyswietlDane(spis,i);break;
  24.             case 3: zapiszNaDysku(spis,"ksiazka.txt",i);break;
  25.             case 0: break;
  26.             default: printf("Zla komenda!"); break;
  27.         }
  28.    }
  29. }
  30. void wezDane(ksiazka dane[],int i)
  31. {
  32.     printf("Podaj nazwisko: ");fflush(stdin);
  33.     scanf("%s",dane[i].nazwisko);
  34.     printf("Podaj kierunkowy: ");fflush(stdin);
  35.     scanf("%d",&dane[i].kierunkowy);
  36.     printf("Podaj numer: ");fflush(stdin);
  37.     scanf("%s",dane[i].numer);
  38. }
  39. void wyswietlDane(ksiazka dane[],int max)
  40. {
  41.     int i;
  42.     for(i=0;i<max;i++)
  43.         printf("%d) %15s %2d %9s\n",i+1,dane[i].nazwisko,dane[i].kierunkowy,dane[i].numer);
  44. }
  45. void zapiszNaDysku(ksiazka dane[],char *gdzie,int max)
  46. {
  47.     FILE *fw;
  48.     int i;
  49.     if((fw=fopen(gdzie,"w"))==NULL)printf("Blad otwarcia.");
  50.     else printf("Zapisano.");
  51.     for(i=0;i<max;i++)
  52.         fprintf(fw,"%d) %15s %2d %9s\n",i+1,dane[i].nazwisko,dane[i].kierunkowy,dane[i].numer);
  53.     fclose(fw);
  54. }
  55.