Lab 06

background image

Laboratorium nr 6

Temat: Definiowanie struktur - pojedynczych jak i tablic. Prosta struktura bazy danych.

1) Definiowanie struktury pojedynczej jak i tablicy struktur.

# include <stdio.h>
# include <string.h>

struct baza {

char imie[10];
char nazwisko[25];

char telefon[10];
};

main() {

struct baza osoba;
/*pobranie danych*/

printf("Podaj dane:\n");
printf("\tImie: ");

gets(osoba.imie);
printf("\tNazwisko: ");

gets(osoba.nazwisko);
printf("\tNumer telefonu: ");

gets(osoba.telefon);
/*wypisanie danych*/

printf("\nDane osobowe:\n");
printf("\tImie: %s\n", osoba.imie);

printf("\tNazwisko:%s\n",osoba.nazwisko);
printf("\tTelefon:%s\n",osoba.telefon);

return 0;
}

# include <stdio.h>
# include <string.h>

struct baza {

char imie[10];
char nazwisko[25];

char telefon[10];
};

main() {

struct baza osoby[2];
int i;

/*pobranie danych*/
for(i=0;i<2;i++) {

printf("\nPodaj dane osoby[%i]:\n",i);
printf("\tImie: ");

gets(osoby[i].imie);
printf("\tNazwisko: ");

gets(osoby[i].nazwisko);
printf("\tTelefon: ");

gets(osoby[i].telefon);
};

/*wypisanie danych*/
for(i=0;i<2;i++){

printf("\nDane osoby[%i]:\n",i);
printf("\tImie: %s\n",osoby[i].imie);

printf("\tNazwisko:%s\n",osoby[i].nazwisko);
printf("\tTelefon:%s\n",osoby[i].telefon);

};
return 0;

}

Uwaga:
a. Podstawowe informacje o strukturach - struct

Struktury danych pozwalają połączyć pod jedną nazwą różne typy danych, np.

char + int +

float

, itp.

Strukturę definiuje się używając słowa kluczowego struct

struct moja_struktura {

typ1 zmienna1;

typ2 zmienna2;

} zmienna_struktury, zmienne_struktury[5];

b. Przykładowe operacje na łańcuchu dostępne w <stdio.h> oraz <string.h>

Np.

Funkcja

Działanie

1.

gets()

pobranie łańcucha z klawiatury

2.

fgets()

pobranie łańcucha (całej linii) z pliku

3.

read()

pobiera określoną liczbę bajtów z pliku do bufora

4.

fread()

pobranie bloku n-elementów o danym rozmiarze z pliku

5.

strcpy()

skopiowanie łańcucha

6.

strcat()

połączenie dwóch łańcuchów,

7.

strlen()

podanie długości łańcucha

8.

strcmp()

porównanie kolejności dwóch łańcuchów

background image

2) Odwołanie do struktury poprzez wskaźnik.

# include <stdio.h>

struct baza {
char imie[10];

char nazwisko[25];
int telefon;

};

int main() {
FILE *wsk_pliku;

struct baza osoba, *wsk_osoby;
wsk_osoby=&osoba;

printf("\nPodaj dane osoby:\n");
printf("\tImie: "); scanf("%s",osoba.imie);

printf("\tNazwisko: "); scanf("%s",osoba.nazwisko);
printf("\tTelefon: "); scanf("%d",&osoba.telefon);

if((wsk_pliku=fopen("baza.txt","w+"))!=NULL) {
fprintf(wsk_pliku,"%s",wsk_osoby->imie); fprintf(wsk_pliku,"\n");

fprintf(wsk_pliku,"%s",wsk_osoby->nazwisko); fprintf(wsk_pliku,"\n");
fprintf(wsk_pliku,"%d",wsk_osoby->telefon); fprintf(wsk_pliku,"\n");

fclose(wsk_pliku);
}

if((wsk_pliku=fopen("baza.txt","r"))!=NULL) {
fscanf(wsk_pliku,"%s",wsk_osoby->imie);

fscanf(wsk_pliku,"%s",wsk_osoby->nazwisko);
fscanf(wsk_pliku,"%d",&wsk_osoby->telefon);

fclose(wsk_pliku);
}

else
printf("Blad otwarcia pliku\n");

printf("\nDane osoby:\n");
printf("\tImie: %s\n",wsk_osoby->imie);

printf("\tNazwisko: %s\n", wsk_osoby->nazwisko);
printf("\tTelefon: %d", wsk_osoby->telefon);

return 0;
}

Uwaga:
W przypadku struktur istnieje także możliwość korzystania ze wskaźników. W tym celu, w języku C
wprowadzono specjalny operator, który jest nazywany operatorem strzałki

>

struct moja_struktura {

typ1 zmienna1;
typ2 zmienna2;

} zmienna, *wsk_zmiennej;


wsk_zmiennej=&zmienna;

wsk_zmiennej->zmienna1="…";
wsk_zmiennej->zmienna2="…";

3) Zadanie

: Opracuj program tworzący prostą bazę danych np. osobowych. Program powinien zawierać

możliwość wprowadzenia danych, zapisania oraz pobrania danych z dysku. Program powinien
korzystać z funkcji oraz sprawdzać poprawność wprowadzanych danych. Przykładowe menu:

1. Wprowadź dane
2. Zapisz dane na dysk
3. Pobierz dane z dysku
4. Wyświetl dane
5. Koniec


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron