Kurs programowania w C cz. 55

Nasza ocena:

5
Pobrań: 7
Wyświetleń: 637
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C  cz. 55 - strona 1

Fragment notatki:

FUNKCJE WEJŚCIA 69 Funkcje wejścia Funkcja scanf() Teraz pomyślmy o sytuacji odwrotnej. Tym razem to użytkownik musi powiedzieć coś programowi. W poniższym przykładzie program podaje kwadrat liczby, podanej przez użytkownika: #include  int main () { int liczba = 0; printf ("Podaj liczbę: "); scanf ("%d", &liczba); printf ("%d*%d=%d\n", liczba, liczba, liczba*liczba); return 0; } Zauważyłeś, że w tej funkcji przy zmiennej pojawił się nowy operator —  &  (etka). Jest on ważny, gdyż bez niego funkcja scanf() nie skopiuje odczytanej wartości liczby do odpowiedniej zmiennej! Właściwie oznacza przekazanie do funkcji adresu zmiennej, by funkcja mogła zmienić jej wartość. Nie musisz teraz rozumieć, jak to się odbywa, wszystko zostanie wyjaśnione w rozdziale  Wskaźniki. Oznaczenia są podobne takie jak przy printf(), czyli scanf(%i, &liczba); wczytu- je liczbę typu int, scanf(%f, &liczba); â€“ liczbę typu float, a scanf(%s, tablica znaków); ciąg znaków. Ale czemu w tym ostatnim przypadku nie ma etki? Otóż, gdy podajemy jako argument do funkcji wyrażenie typu tablicowego zamieniane jest ono automa- tycznie na adres pierwszego elementu tablicy. Będzie to dokładniej opisane w rozdziale poświęconym  wskaźnikom. Brak etki jest częstym błędem szczególnie wśród początkujących programistów. Ponieważ funkcja scanf() akceptuje zmienną liczbę argumentów to nawet kompilator może mieć kłopoty z wychwyceniem takich błędów (konkretnie chodzi o to, Å¼e standard nie wymaga od kompilatora wykrywania takich pomyłek), choć kompilator GCC radzi sobie z tym jeżeli podamy mu argument -Wformat. Należy jednak uważać na to ostatnie użycie. Rozważmy na przykład poniższy kod: #include  int main(void) { char tablica[100]; /* 1 */ scanf("%s", tablica); /* 2 */ return 0; } Robi on niewiele. W linijce 1 deklarujemy  tablicę  100 znaków czyli mogącą prze- chować  napis  długości 99 znaków. Nie przejmuj się jeżeli nie do końca to wszystko ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz