Lab 08

background image

Laboratorium nr 8

Temat: Definiowanie struktur oraz strumieni tekstowych – czytanie, zapisywanie oraz dopisywanie

danych. Program obsługuj cy prost struktur bazy danych.

1)

Definiowanie struktury bazy, pobieranie, zapisywanie oraz odczyt danych z pliku zewn trznego

# include <stdio.h>
# include <conio.h>
struct baza {
char imie[10];
char nazwisko[25];
char telefon[10];
};
int wczytaj_dane(struct baza *wsk){
fprintf(stdout,"\nPodaj dane osoby\n");
fprintf(stdout,"Podaj imie: "); gets(wsk->imie);
fprintf(stdout,"Podaj nazwisko: "); gets(wsk->nazwisko);
fprintf(stdout,"Podaj telefon: "); gets(wsk->telefon);
return(0);
}
int zapisz_dane(struct baza *wsk){
FILE *wsk_pliku;
if((wsk_pliku=fopen("baza.txt","a+"))!=NULL) {
fprintf(wsk_pliku,wsk->imie); fprintf(wsk_pliku," ");
fprintf(wsk_pliku,wsk->nazwisko); fprintf(wsk_pliku," ");
fprintf(wsk_pliku,wsk->telefon); fprintf(wsk_pliku,"\n");
fclose(wsk_pliku);
}
return(0);
}
int pobierz_dane(struct baza *wsk){
FILE *wsk_pliku;
char znak, bufor[256];
int i;
if((wsk_pliku=fopen("baza.txt","r"))!=NULL) {
do {
i=0;
do {
znak=fgetc(wsk_pliku);
bufor[i++]=znak;
} while (znak!='\n');
sscanf(bufor,"%s %s %s", wsk->imie, wsk->nazwisko, wsk->telefon);
} while (fscanf(wsk_pliku,&znak)!=EOF);
fclose(wsk_pliku);
}
return(0);
}
int wyswietl_dane(struct baza *wsk){
fprintf(stdout,"Poczatek bazy\n");
fprintf(stdout,"Imie: %s",wsk->imie);
fprintf(stdout,"\tNazwisko: %s", wsk->nazwisko);
fprintf(stdout,"\tTelefon: %s\n", wsk->telefon);
fprintf(stdout,"Koniec bazy");
return(0);
}

main() {
struct baza *wsk_osoby;
wczytaj_dane(wsk_osoby);
zapisz_dane(wsk_osoby);
pobierz_dane(wsk_osoby);
wyswietl_dane(wsk_osoby);
getch();
return(0);
}

background image

Uwaga:

a. Standardowe strumienie tekstowe i ich fizyczne poł czenia

Strumie

Poł czenie

Stdout

Ekran

Stdin

Klawiatura

Stdprn

Drukarka

Stdaux

Ekran

Stderr

Ekran

b. Wykaz przykładowych funkcji obsługuj cych pliki zewn trzne

Np. Biblioteka

Funkcja

Działanie

1.

fopen()

Otwieranie pliku

2.

fclose()

Zamykanie pliku

3.

fprintf()

Zapisywanie do pliku

4.

fscanf()

Przegl danie pliku

5.

fgets()

Pobranie danych z pliku

feof()

Sprawdzanie ko ca pliku

<stdio.h>

fgetc()

Pobranie znaku

6.

eof()

Sprawdzanie ko ca pliku

7

read()

Czyta z pliku skojarzonego z uchwytem (handle)

8

open()

Otwiera plik do czytania i zapisywania i kojarzy go z uchwytem (handle)

9

close()

Zamyka plik skojarzony z uchwytem (handle)

10

<io.h>

write()

Zapisuje do pliku

Przykłady zastosowania funkcji:

fscanf()

fgets()

FILE *wsk_pliku;
char znak;
fscanf(wsk_pliku,&znak)

FILE *wsk_pliku;
char znak;
fgets(bufor,256,wsk_pliku);

open()

eof()

int uchwyt;
uchwyt=open("file.txt”, “O_CREAT |
O_TEXT”));

int uchwyt;
while (!eof(uchwyt));

c. Znaki specjalne

• Koniec linii: '\n' (sekwencja znaków ASCII 13 i 10 tzn. <cr> - carrage return <lf> - line feed)

• Koniec pliku tekstowego: '^Z' (kod ASCII 26)

2)

Zadanie: Zmodyfikuj powy szy program tworz cy prost baz danych osobowych tak, aby

• istniała mo liwo dopisywania kolejnych rekordów danych,

• wy wietlania wybranych lub wszystkich rekordów zawartych w bazie/pliku,

• wy wietlania wybranych pól bazy, np. nazwisko

• poszczególne pola rekordu powinny by rozdzielone znakami charakterystycznymi np. *, ^,%,$

Adam | Nowak % 123456789 $ * Jas | Kowalski % 123456789 $ *

• program powinien korzysta z funkcji oraz sprawdza poprawno wprowadzanych danych.

Uwaga: Przykładowe menu programu:

1.

Wprowad dane

2.

Zapisz dane na dysk

3.

Pobierz dane z dysku

4.

Wy wietl dane

5.

Wy wietl pole

6.

Koniec


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron