printf.doc

(60 KB) Pobierz
printf

printf

stdio.h, cstdio

int printf(const char *format, ...);

Opis

Funkcja służy do wyświetlania tekstu na standardowym wyjściu, którym domyślnie jest ekran. Jako pierwszy parametr podajesz tzw. łańcuch formatujący (format). Jest to po prostu string w którym niektóre kody (sekwencje znaków) zostaną zastąpione wartościami pozostałych parametrów.

 

Na przykład mamy zmienne:

char *imie="Ala";
int wiek=5;
printf("%s ma %i lat.",imie,wiek);

Wyświetli następujący tekst:

Ala ma 5 lat.

Jak widzisz kod %s został zastąpiony wartością zmiennej imie, a %i wiek. Poniższa tabela zawiera wykaz znaków typu w zależności od typu parametru.
 

Znak typu

Wartość wyjściowa

Przykładowe typy parametrów

Przykład

d

Dziesiętna ze znakiem

int, long, long long

982

i

Dziesiętna ze znakiem

int, long, long long

982

o

Ósemkowa bez znaku

int, long, long long

1726

u

Dziesiętna bez znaku

unsigned int, unsigned long, unsigned long long

982

x

Szesnastkowa bez znaku, używa małych liter

int, long, long long, unsigned int, unsigned long, unsigned long long

3d6

X

Szesnastkowa bez znaku, używa wielkich liter

int, long, long long, unsigned int, unsigned long, unsigned long long

 

3D6

e

Liczba rzeczywista (dziesiętna) w postaci wykładniczej

float, double

3.45e+3

E

Liczba zmiennoprzecinkowa w postaci wykładniczej

float, double

3.45E+3

f

Zmiennoprzecinkowa

float, double

1.03.1961

g

Zmiennoprzecinkowa, działa jak e lub f zależności od precyzji

float, double

 

G

Zmiennoprzecinkowa, działa jak E lub f zależności od precyzji

float, double

 

c

Znak

char

A

s

Łańcuch znaków

char *, char []

Ala

n

Umieszcza we wskazanym miejscu liczbę dotychczas wysłanych znaków

int *

 

P

Wskaźnik, wyświetla adres

 

A100:0012


Podając parametry w łańcuchu trzeba pamiętać o możliwości konwersji. Na przykład:

char c='A';
printf("Znak%c ma kod %i",c,c);

Wyświetli:


Znak A ma kod 65

Dzieje się tak dlatego, że w drugim przypadku podając znak formatujący %i parametr (zmienna) c zostanie skonwertowana na int.
Do konwersji może dochodzić również w przypadku innych znaków formatujących i typów parametrów.
 

 

 

 

 

 


Funkcja printf pozwala również na dodatkowe formatowanie. Poniższa tabela przedstawia znaki modyfikujące rozmiar parametru. Należy je podawać przed znakiem formatującym, na przykład modyfikując znak d modyfikatorem l zamiast %d piszesz %ld.

Modyfikator

Działanie

Modyfikator znaku formatującego

H

Parametr traktuje się jakby był typu short int

d, i, o, u, x, X

L

Parametr traktuje się jakby był typu long int dla parametrów całkowitych i double dla zmiennoprzecinkowych

d, i, o, u, x, X
e, E, f, g, G

L

Parametr traktuje się jakby był typu long double dla parametrów zmiennoprzecinkowych

e, E, f, g, G


Pamiętaj, że czasem brak modyfikatora rozmiaru powoduje błędny wyświetlenie wartości zmiennej, choć jest ona prawidłowa. Możesz wówczas stracić wiele czasu zastanawiając się dlaczego np. wynik obliczeń jest błędny, gdy w rzeczywistości jest on prawidłowy, a został jedynie źle wyświetlony. Dotyczy to zwłaszcza wielkich wartości i jest skutkiem błędnej konwersji.

Możesz tez formatować wyświetlane liczby na przykład decydując ile miejsc po przycinku ma się wyświetlić. W przypadku liczb zmiennoprzecinkowych (znaki formatujące e, E, f, g, G) robisz to podając .n, gdzie n jest liczbą miejsc po przecinku, np.:
float x=10.2;
printf("x=%.3f\n",x);
Wyświetli:
x=10.200
czyli 3 miejsca po przecinku. Podając .0 pomijasz w ogóle część ułamkową. Możesz też wpisać, np.:
printf("x=%6.2f\n",x);
wówczas 6 będzie całkowitą liczbą znaków i zostaną one wyrównane do prawej strony:
x=10.20
Zauważ, że "10.20" to 5 znaków, zatem do sześciu znaków będzie uzupełnione spacjami.
Zastosowanie specyfikatora precyzji dla liczby całkowitej, spowoduje uzupełnienie brakujących miejsc zerami, np.:
int x=12;
printf("x=%.3i\n",x);
wyświetli:
x=012

Używając funkcji printf możliwe jest również justowanie (wyrównywanie) tekstu. Flagi służące do tego celu przedstawia poniższa tabela.
 

Flaga

Działanie

Flaga znaku formatującego

-

Wyrównuje wyświetlaną wartość do n znaków, uzupełniając brakujące miejsca spacjami po prawej stronie

X, x, E, e, f, G, g, d, i, u, s, c

+

Wyświetla znak "-" lub "+" zależnie od wartości

...
Zgłoś jeśli naruszono regulamin