Wejście/wyjście
Odczyt danych z klawiatury (standardowego wejścia) oraz zapis na monitor (standardowe wyjście) w
programie w C realizowany jest za pomocą funkcji systemowych printf i scanf znajdujących się w
standardowej bibliotece wejścia/wyjścia, która jest domyślnie dołączana do każdego programu.
Funkcja printf, która umożliwia wypisywanie wyników na standardowym wyjściu może mieć wiele
argumentów:
printf(tekst_sterujący, arg1, arg2,…)
Pierwszy argument jest tekstem zawartym między znakami ” i zawiera ciąg znaków mających się
pojawić wprost na wyjściu oraz formaty opisujące sposoby wypisywania na ekranie kolejnych
argumentów. Każdy opis pola (format) rozpoczyna się znakiem % a kończy znakiem przekształcenia
(np. d, f) i dotyczy kolejnego argumentu – liczba formatów powinna być równa liczbie argumentów
pomniejszonej o 1. Poniższy program powoduje wypisanie na ekranie wartości zmiennych i, j typu
integer oraz zmiennej a typu double.
int main(int argc, char *argv[])
{
int i=1,j;
double a=0.1;
j=i+1;
printf("\ti=%d\n\tj=%d\n\ta=%f\n",i,j,a);
}
Pierwszy parametr funkcji printf zawiera opisy pól odpowiadające wyprowadzanym zmiennym: %d –
opisuje zmienną i, kolejny opis %d opisuje zmienną j, %f opisuje zmienną a. Wartość każdej zmiennej
pojawi się na ekranie w nowej linii (\n) po odstępie (\t) poprzedzona nazwą zmiennej i znakiem
równości:
i=1
j=2
a=0.100000
Znaki przekształcenia zależą od typu zmiennej, i określają sposób, w jaki ma zostać wyświetlona:
d – liczba dziesiętna całkowita
f – liczba zmiennoprzecinkowa w notacji dziesiętnej (np. 15.78)
e – liczba zmiennoprzecinkowa w notacji wykładniczej (np. 1.0e+10 oznacza 1 * 10
10
)
c – pojedynczy znak
s - ciąg znaków
x – liczba szesnastkowa
o – liczba ósemkowa
Aby określić liczbę wyświetlanych cyfr znak przekształcenia należy poprzedzić kodem długości. Np.:
%4d
– oznacza liczbę całkowitą zapisana na co najmniej 4 pozycjach (jeśli liczba znaków
nie będzie wystarczająca pole zostanie powiększone)
%10.4f
– oznacza liczbę rzeczywistą zapisaną na 10 pozycjach, z dokładnością do 4 cyfr po
przecinku
Do formatowania wyników w postaci tabelki może być przydatny znak – występujący bezpośrednio
po symbolu %, powodujący dosunięcie argumentu do początku pola (np. %-4d).
Do wprowadzania danych służy funkcja scanf:
scanf(tekst_sterujący, adres1, adres2,…)
Odczytuje ona dane ze standardowego wejścia według formatu zadanego w pierwszym parametrze
i zapisuje je pod adresami będącymi kolejnymi argumentami. tekst_sterujący zawiera jedynie
kody formatowania, które są analogiczne jak w funkcji printf. Adres zmiennej, która ma być
wczytana uzyskuje się za pomocą operatora &. Poniższy program wyświetla zaproszenie do podania
wartości zmiennej i oraz a, wczytuje dane i wyświetla ich wartości.
int main(int argc, char *argv[])
{
int i;
double a;
printf("podaj i\n");
scanf("%d",&i);
printf("a=");
scanf("%lf",&a);
printf("\ti=%d\n\ta=%-10.2e\n",i,a);
}
A oto efekt wykonania programu Czcionką pogrubioną zapisane zostały dane podane przez
użytkownika:
podaj i
20
a=1000000
i=20
a=1.00e+006