Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 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.
- */
- #include <stdio.h>
- #define MAX_DLUGOSC 30
- #define MAX_DLUGOSC_LINII 1024
- struct Osoba {
- char imie[MAX_DLUGOSC];
- char nazwisko[MAX_DLUGOSC];
- unsigned int wiek;
- unsigned int wzrost;
- unsigned int waga;
- };
- void zapisz_do_pliku(FILE *PLIK, struct Osoba *nowaOsoba)
- {
- // Imie
- printf("\nPodaj imie: ");
- scanf("%s", nowaOsoba->imie);
- fprintf(PLIK, "\n%s", nowaOsoba->imie);
- // Nazwisko
- fprintf(PLIK, "\n");
- printf("Podaj Nazwisko: ");
- scanf("%s", nowaOsoba->nazwisko);
- fprintf(PLIK, "%s", nowaOsoba->nazwisko);
- // Wiek
- fprintf(PLIK, "\n");
- printf("Podaj wiek: ");
- scanf("%u", &nowaOsoba->wiek);
- fprintf(PLIK, "%u", nowaOsoba->wiek);
- // Wzrost
- fprintf(PLIK, "\n");
- printf("Podaj wzrost: ");
- scanf("%u", &nowaOsoba->wzrost);
- fprintf(PLIK, "%u", nowaOsoba->wzrost);
- // Waga
- fprintf(PLIK, "\n");
- printf("Podaj waga: ");
- scanf("%u", &nowaOsoba->waga);
- fprintf(PLIK, "%u", nowaOsoba->waga);
- fprintf(PLIK, "\n---");
- }
- void odczytaj_z_pliku(FILE *PLIK)
- {
- char tmp[MAX_DLUGOSC_LINII];
- unsigned int line_counter = 0;
- // Sprawdz czy plik jest pusty
- getc(PLIK);
- if(feof(PLIK)){
- printf("Plik jest pusty!\n");
- return;
- }
- fseek(PLIK, 0, SEEK_SET);
- while(!feof(PLIK)){
- fgets(tmp, MAX_DLUGOSC_LINII, PLIK);
- switch(line_counter){
- case 1:
- printf("Imie: %s", tmp);
- line_counter++;
- break;
- case 2:
- printf("Nazwisko: %s", tmp);
- line_counter++;
- break;
- case 3:
- printf("Wiek: %s", tmp);
- line_counter++;
- break;
- case 4:
- printf("Wzrost: %s", tmp);
- line_counter++;
- break;
- case 5:
- printf("Waga: %s", tmp);
- line_counter++;
- break;
- case 6:
- line_counter = 1;
- printf("%s", tmp);
- break;
- default:
- line_counter = 1;
- break;
- }
- }
- }
- int main(void)
- {
- FILE *PLIK;
- PLIK = fopen("plik.txt", "a+");
- if(PLIK == NULL){
- printf("Blad otwarcia pliku!\n");
- return -1;
- }
- char wybor;
- do{ // Glowna petla
- puts("\n1. Dopisz do pliku");
- puts("2. Odczytaj z pliku");
- puts("0. Zakoncz");
- scanf(" %c", &wybor);
- switch(wybor){
- case '1':
- {
- struct Osoba nowaOsoba;
- zapisz_do_pliku(PLIK, &nowaOsoba);
- break;
- }
- case '2':
- {
- if(fseek(PLIK, 0, SEEK_SET) == -1){
- printf("Blad przesuwania wskaznika pliku!\n");
- return -1;
- }
- odczytaj_z_pliku(PLIK);
- if(fseek(PLIK, 0, SEEK_END) == -1){
- printf("Blad przesuwania wskaznika pliku!\n");
- return -1;
- }
- break;
- }
- case '0':
- break;
- default:
- continue;
- }
- }while(wybor != '0');
- if(fclose(PLIK)){
- printf("Blad zamkniecia pliku!\n");
- return -1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement