- C Helpdesk http://www.chelpdesk.pun.pl/index.php - Tutorial http://www.chelpdesk.pun.pl/viewforum.php?id=10 - Korzystanie ze struktur http://www.chelpdesk.pun.pl/viewtopic.php?id=8 |
domingo - 03-29-2007 18:46:25 |
Artykuł jest wprowadzeniem do dwóch klas zmiennych, nieco bardziej skomplikowanych. Zmienne typu strukturalnego są zbiorem innych zmiennych na ogół różnych typów. Natomiast wskaźniki to zmienne, które odnoszą się do adresów w pamięci innych zmiennych. Kod:Listing 4.1. #include<stdio.h> struct CD { char nazwa[40]; char opis[40]; char kategoria[12]; float cena; int numer; } dysk; main() { puts(”Podaj dane płyty\n\n”); printf(”Podaj nazwę:”); gets(dysk.nazwa); printf(”Podaj opis:”); gets(dysk.opis); printf(”Podaj kategorię:”); gets(dysk.kategoria); printf(”Podaj cenę:”); scanf(”%f”, &dysk.cena); printf(”Podaj położenie:”); scanf(”%d”, &dysk.numer); puts(”Dane płyty, które podałeś są następujące:\n”); printf(”Nazwa: %s\n”, dysk.nazwa); printf(”Opis: %s\n”, dysk.opis); printf(”Kategoria: %s\n”, dysk.kategoria); printf(”Cena: %6.2f\n”, dysk.cena); printf(”Położenie: %d\n”, dysk.numer); } 5.Tablice struktur. Kod:Listing 5.1. #include<stdio.h> struct CD { char nazwa[40]; char opis[40]; char kategoria[12]; float cena; int numer; } dysk[10]; main() { int index, i; char wybierz; wybierz = 'Y'; index = 0; do { printf(”Podaj numer płyty %d\n”, index); printf(”Podaj nazwę:”); gets(dysk[index].nazwa); printf(”Podaj opis:”); gets(dysk[index].opis); printf(”Podaj kategorię:”); gets(dysk[index].kategoria); printf(”Podaj cenę:”); scanf(”%f”, &dysk[index].cena); printf(”Podaj położenie:”); scanf(”%d”, &dysk[index].numer); index++; if (index<10) { printf(”Czy chcesz jeszcze raz wprowadzić dane? Y or N”); wybierz = getchar(); putchar('\n'); } } while (index < 10 && (wybierz == 'Y' || wybierz == 'y')); puts(”Nazwa Położenie\n\n”); for (i=0; i<index; i++) printf(”%s %d\n”, dysk[i].nazwa, dysk[i].numer); } 6.Praca ze strukturami. Kod:Listing 6.1. Zapisywanie struktury CD #include<stdio.h> main() { FILE *fp; struct CD { char nazwa[40]; char opis[40]; char kategoria[12]; float cena; int numer; } dysk; char plik[25]; printf(”Podaj nazwę pliku, który chcesz utworzyć: ”); gets(plik); if ((fp = fopen(plik, ”w”)) == NULL) { printf(”Can not open the file %s\n”, plik); exit(); } puts(”Podaj dane płyty\n”); printf(”Podaj nazwę:”); gets(dysk.nazwa); while (strlen(dysk.nazwa) > 0 ) { printf(”Podaj opis:”); gets(dysk.opis); printf(”Podaj kategorię:”); gets(dysk.kategoria); printf(”Podaj cenę:”); scanf(”%f”, &dysk.cena); printf(”Podaj położenie:”); scanf(”%d”, &dysk.numer); fwrite(&dysk, sizeof(dysk), 1, fp); printf(”Podaj nazwę:”); gets(dysk.nazwa); } fclose(fp); } 7.Wczytywanie struktur. Kod:Listing 7.1. Odczytywanie z dysku struktury CD #include<stdio.h> main() { FILE *fp; struct CD { char nazwa[40]; char opis[40]; char kategoria[12]; float cena; int numer; } dysk; char plik[25]; printf(”Podaj nazwę pliku, z którego chcesz czytać: ”); gets(plik); if ((fp = fopen(plik, ”r”)) == NULL) { printf(”Can not open the file %s\n”, plik); exit(); } while (fread(&dysk, sizeof(dysk), 1, fp) == 1) { puts(dysk.nazwa); putchar('\n'); puts(dysk.opis); putchar('\n'); puts(dysk.kategoria); putchar('\n'); printf(”%f\n”, dysk.cena); printf(”%d\n”, dysk.numer); } fclose(fp); } To tyle, co chciałem wam przedstawić. W weekend zamieszczę aplikację, która wykorzystuje wszystkie informacje na temat struktur. Mam nadzieję, że ten artykuł komuś pomoże. Pozdrawiam. |