70
ROZDZIAŁ JO. PODSTAWOWE PROCEDURY WEJŚCIA I WYJŚCIA
rozumiesz j>ojęcia takie jak tablica czy ciąg znaków staną się dla Ciebie jasne w
miarę czytania kolejnych rozdziałów. W linijce 2 wywołujemy funkcję scanf(), która odczytuje tekst ze standardowego wejścia. Nie zna ona jednak rozmiaru tablicy i nie wie ile znaków może ona przecltować przez co będzie czytać tyle znaków, aż na]x>tka biały znak (format %s nakazuje czytanie pojedynczego słowa), co może doprowadzić do przc|>cłnicnia bufora. Niebezpieczne skutki czegoś takiego opisane są w rozdziale poświęconym napisom. Na chwilę obecną musisz zapamiętać, żeby zaraz jm> znaku procentu podawać maksymalną liczbę znaków', które może przechować bufor, czyli liczbę o jeden mniejszą, niż rozmiar tablicy. Bezpieczna wersją powyższego kodu jest:
#include <stdio.h>
int main(void)
char tablica[100]; scanf ('"/,99s", tablica); return 0;
Funkcja scanf() zwraca liczl>ę poprawnie wczytanych zmiennych lub EOF jeżeli nie ma już danych w strumieniu lub nastąpi! błąd. Załóżmy dla przykładu, że chcemy stworzyć program, który odczytuje jx> kolei liczby i wypisuje ich 3 potęgi. W pewnym momencie dane się kończą lub jest wprowadzana niepoprawna dana i wówczas nasz program powinien zakończyć działanie. Aby to zrobić, należy sprawdzać wartość zwracaną pr/ez funkcję scanf() w warunku pętli:
#include <stdio.h>
int main(void)
int n;
ubile (scanf("%d", &n)««l) { printf (">Cd\n", n*n*n);
return 0;
Podobnie możemy napisać program, który wczytuje po dwie liczby i je sumuje: tfinclude <stdio.h>
int main(void)
int a, b;
uhile (scanf ("JCd */,d", &a, Ab)««2) { printf("yto\n", a+b);
return 0;
Rozpatrzmy teraz trochę bardziej skomplikowany przykład. Otóż. ponownie jak poprzednio nasz program będzie wypisywał 3 potęgę podanej liczby, ale tym razem