Advertisement
Tobiahao

09_PLIKI_05

Jan 14th, 2017
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.72 KB | None | 0 0
  1. /*
  2. 5. Napisz program, który będzie pozwalał zapisać, dopisać i odczytać z pliku takie dane osób jak: imię, nazwisko, wiek, wzrost i waga. Program powinien umożliwić użytkownikowi dodanie dowolnej liczby zestawów danych o osobach.
  3. */
  4.  
  5. #include <stdio.h>
  6. #define MAX_DLUGOSC 30
  7. #define MAX_DLUGOSC_LINII 1024
  8.  
  9. struct Osoba {
  10.     char imie[MAX_DLUGOSC];
  11.     char nazwisko[MAX_DLUGOSC];
  12.     unsigned int wiek;
  13.     unsigned int wzrost;
  14.     unsigned int waga;
  15. };
  16.  
  17. void zapisz_do_pliku(FILE *PLIK, struct Osoba *nowaOsoba)
  18. {
  19.     // Imie
  20.     printf("\nPodaj imie: ");
  21.     scanf("%s", nowaOsoba->imie);
  22.     fprintf(PLIK, "\n%s", nowaOsoba->imie);
  23.     // Nazwisko
  24.     fprintf(PLIK, "\n");
  25.     printf("Podaj Nazwisko: ");
  26.     scanf("%s", nowaOsoba->nazwisko);
  27.     fprintf(PLIK, "%s", nowaOsoba->nazwisko);
  28.     // Wiek
  29.     fprintf(PLIK, "\n");
  30.     printf("Podaj wiek: ");
  31.     scanf("%u", &nowaOsoba->wiek);
  32.     fprintf(PLIK, "%u", nowaOsoba->wiek);
  33.     // Wzrost
  34.     fprintf(PLIK, "\n");
  35.     printf("Podaj wzrost: ");
  36.     scanf("%u", &nowaOsoba->wzrost);
  37.     fprintf(PLIK, "%u", nowaOsoba->wzrost);
  38.     // Waga
  39.     fprintf(PLIK, "\n");
  40.     printf("Podaj waga: ");
  41.     scanf("%u", &nowaOsoba->waga);
  42.     fprintf(PLIK, "%u", nowaOsoba->waga);
  43.     fprintf(PLIK, "\n---");
  44. }
  45.  
  46. void odczytaj_z_pliku(FILE *PLIK)
  47. {
  48.     char tmp[MAX_DLUGOSC_LINII];
  49.     unsigned int line_counter = 0;
  50.    
  51.     // Sprawdz czy plik jest pusty
  52.     getc(PLIK);
  53.     if(feof(PLIK)){
  54.         printf("Plik jest pusty!\n");
  55.         return;
  56.     }
  57.     fseek(PLIK, 0, SEEK_SET);
  58.    
  59.     while(!feof(PLIK)){
  60.         fgets(tmp, MAX_DLUGOSC_LINII, PLIK);        
  61.         switch(line_counter){
  62.             case 1:
  63.                 printf("Imie: %s", tmp);
  64.                 line_counter++;
  65.                 break;
  66.             case 2:
  67.                 printf("Nazwisko: %s", tmp);
  68.                 line_counter++;
  69.                 break;
  70.             case 3:
  71.                 printf("Wiek: %s", tmp);
  72.                 line_counter++;
  73.                 break;
  74.             case 4:
  75.                 printf("Wzrost: %s", tmp);
  76.                 line_counter++;
  77.                 break;
  78.             case 5:
  79.                 printf("Waga: %s", tmp);
  80.                 line_counter++;
  81.                 break;
  82.             case 6:
  83.                 line_counter = 1;
  84.                 printf("%s", tmp);
  85.                 break;
  86.             default:
  87.                 line_counter = 1;
  88.                 break;
  89.         }
  90.     }
  91. }
  92.  
  93. int main(void)
  94. {
  95.     FILE *PLIK;
  96.     PLIK = fopen("plik.txt", "a+");
  97.    
  98.     if(PLIK == NULL){
  99.         printf("Blad otwarcia pliku!\n");
  100.         return -1;
  101.     }
  102.    
  103.     char wybor;
  104.     do{ // Glowna petla
  105.         puts("\n1. Dopisz do pliku");
  106.         puts("2. Odczytaj z pliku");
  107.         puts("0. Zakoncz");
  108.         scanf(" %c", &wybor);
  109.  
  110.         switch(wybor){
  111.             case '1':
  112.             {
  113.                 struct Osoba nowaOsoba;
  114.                 zapisz_do_pliku(PLIK, &nowaOsoba);
  115.                 break;
  116.             }
  117.             case '2':
  118.             {
  119.                 if(fseek(PLIK, 0, SEEK_SET) == -1){
  120.                     printf("Blad przesuwania wskaznika pliku!\n");
  121.                     return -1;
  122.                 }
  123.                 odczytaj_z_pliku(PLIK);
  124.                 if(fseek(PLIK, 0, SEEK_END) == -1){
  125.                     printf("Blad przesuwania wskaznika pliku!\n");
  126.                     return -1;
  127.                 }
  128.                 break;
  129.             }
  130.             case '0':
  131.                 break;
  132.             default:
  133.                 continue;
  134.         }
  135.     }while(wybor != '0');
  136.    
  137.     if(fclose(PLIK)){
  138.         printf("Blad zamkniecia pliku!\n");
  139.         return -1;
  140.     }
  141.     return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement