38949

38949



69


FUNKCJE WEJŚCIA

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, ]>odaiicj przez użytkownika:

#include <stdio.h>

int main ()

{

int liczba ■ 0;

printf ("Podaj liczbę: ");

scanf ("/Cd", ftliczba);

printf ("/Cd*7,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 fimkcja 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 8$ podobne takie jak przy printf(), czyli scanf (7,i, ftliczba) ; wczytuje liczbę typu int. scanf (ŹCf, ftliczba); - liczbę typu f loat. a scanf (%s, tablica.znakóv); ciąg znaków. Ale czemu w tym ostatnim przypadku nie ma etki? Otóż, gdy ]x>dajemy jako argument do funkcji wyrażenie typu tablicowego zamieniane jest ono automatycznie na aelres 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 <stdio.h>

int main(void)

{

char tablica[100];    /* 1 */

scanf("7,s", tablica); /* 2 */ return 0;

Robi on niewiele. W linijce 1 deklarujemy tablicę 100 znaków czyli mogącą przechować napis długości 99 znaków. Nie przejmuj się jeżeli nie do końca to wszystko



Wyszukiwarka

Podobne podstrony:
054 2 Powtórzmy teraz próbę z zapaloną zapałką. Tym razem gaśnie ona natychmiast po wsunięciu w otwó
31656 P5170120 124 Rozdzig} c Jeśli spróbujemy teraz wyjaśnić sytuację płodu w łonj matki, to okaże
P5170120 124 Rozdzig} c Jeśli spróbujemy teraz wyjaśnić sytuację płodu w łonj matki, to okaże się, j
P5170120 124 Rozdzig} c Jeśli spróbujemy teraz wyjaśnić sytuację płodu w łonj matki, to okaże się, j
31656 P5170120 124 Rozdzig} c Jeśli spróbujemy teraz wyjaśnić sytuację płodu w łonj matki, to okaże
Formatowane wejście int scanf(const char ♦format, ...); •    Funkcja czyta z wejścia
Funkcja scanf scanf("sp_for",argumenty); Funkcja scanf wczytuje znaki ze standardowego wej
Kopia SSA42108 02 Teatry Włoch renetansowi/ch głównymi wejściami, Scamoeezi wpadł na pomysł zrobieni
disp([ ------------------------------------------’]); disp( Funkcja odejmie teraz dwa widma od
wolnorynkowej. W związku z tym nastąpiła pewna zmiana w funkcjonowaniu gospodarstw. Teraz decyzja o
025 3 Funkcje trygonometryczne Teraz obliczamy wartość wyrażenia, podstawiając znalezione wartości:
2 (2392) C. Podaj definicję całki nieoznaczonej funkcji / : M —♦ M. Teraz prosimy przystąpić do rozw

więcej podobnych podstron