JezykC12, IIS PWSZ, Podstawy programowania

[ Pobierz całość w formacie PDF ]
11. FORMATOWANE WEJŚCIE I WYJŚCIE
W bibliotece
stdio
istnieją funkcje umożliwiające wprowadzanie i wyprowadzanie liczb i napisów
w określonym
formacie
. Format jest wzorcem określającym sposób zapisu danego obiektu - system
zapisu liczb (dziesiętny, ósemkowy, szesnastkowy), dokładność (liczbę znaków), wyrównanie (do
lewej lub do prawej) i inne atrybuty.
Funkcje umożliwiają zapis (odczyt) do (z):
- dowolnego pliku;
- wejścia / wyjścia standardowego;
- tablicy.
Tablica musi mieć przydzielone wystarczająco dużo miejsca w pamięci.
int fprintf ( FILE *strumień, const char *format,
ciąg_argumentów
)
Ciąg argumentów może składać się z 0, 1, 2 ... wyrażeń rozmaitych typów, których wartości są
wpisywane do otwartego pliku skojarzonego z danym strumieniem. Wartości są wpisywane zgodnie
z podanym formatem. Funkcja zwraca liczbę wpisanych znaków w przypadku pomyślnego wykonania,
zaś liczbę ujemną w przypadku błędu.
int printf ( const char *format,
ciąg_argumentów
)
Wywołanie tej funkcji jest równoważne wywołaniu fprintf ( stdout, ... ).
int sprintf (char *s, const char *format,
ciąg_argumentów
)
Funkcja ta działa podobnie, jak dwie poprzednie funkcje, ale wyjściowy ciąg znaków kierowany jest
do tablicy s i kończony znakiem ’\0’ (w przypadku pomyślnym znak ten nie jest wliczany do liczby
wypisanych znaków zwracanej przez funkcję).
Łańcuch będący formatem może zawierać:
- zwykłe znaki (które są wpisywane bezpośrednio do ciągu wyjściowego);
- znaki składające się na specyfikację przekształcenia, które wpływają na postać wyprowadzanych
wartości argumentów.
Specyfikacja przekształcenia musi zaczynać się od znaku % i kończyć jednym z możliwych znaków
przekształcenia. Pomiędzy znakiem % a znakiem przekształcenia mogą wystąpić:
a) modyfikatory:
– dosunięcie wypisanej wartości argumentu do lewego krańca jego pola;
+ wypisanie wartości liczbowej zawsze ze znakiem;
spacja
poprzedzenie wartości spacją, jeśli wartość nie jest poprzedzona znakiem;
0 uzupełnienie liczby wiodącymi zerami do pełnego rozmiaru pola;
# alternatywna (względem standardowej) postać liczby;
b) liczba określająca minimalny rozmiar pola (jeśli zapis wartości argumentu jest krótszy, będzie
dopełniony odstępami lub (w zależności od modyfikatora) zerami;
c) kropka oddzielająca liczbę określającą rozmiar pola od liczby określającej precyzję;
d) liczba określająca precyzję (dla liczb zmiennoprzecinkowych - liczbę cyfr po kropce dziesiętnej,
dla liczb całkowitych - minimalną liczbę cyfr);
e) modyfikator długości:
h argument jest typu
short
lub
unsigned short
;
l argument jest typu
long
lub
unsigned long
;
L argument jest typu
long double
.
Zamiast liczby określającej rozmiar pola lub precyzję można wpisać * - wtedy ta liczba jest obliczana
jako wartość kolejnego argumentu (powinna być typu
int
). Możliwe jest zastąpienie znakami * obu
tych liczb.
Tabela znaków przekształcenia [ Kernighan, Ritchie ]:
Znak Typ argumentu Postać
d, i int Liczba dziesiętna ze znakiem
o int Liczba ósemkowa bez znaku
x, X int Liczba szesnastkowa bez znaku (cyfry a,b,c, ...dla x, A,B,C, ... dla X)
u int Liczba dziesiętna bez znaku
c int Pojedynczy znak (po przekształceniu do
unsigned char
)
s char * Łańcuch (znaki do napotkania ’\0’ lub wypełnienia całego pola)
f double Liczba dziesiętna z częścią ułamkową
e, E double Liczba dziesiętna z częścią ułamkową i wykładnikiem (po
e
lub po
E
)
g, G double W zależności od sytuacji %e (%G) lub %f
p void * Zależna od implementacji
n int * Brak (powoduje zapis do danego argumentu liczby wypisanych do tej
znaków przez bieżące wywołanie funkcji)
% - znak %
  [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • mexxo.keep.pl