[ Pobierz całość w formacie PDF ]

cym format. Powyższy opis należy rozumieć w ten sposób, że sekwencji %d powinien
odpowiadać argument typu int, sekwencji %f powinien odpowiadać argument typu
float lub double itd. Często zdarza się jednak inne niż standardowe skojarzenie ar-
gumentu z sekwencją sterującą. Oto kilka przykładów.
1. Jako liczbę całkowitą można polecić wydrukować kod znaku. Kompi-
lator zadba o konwersję wartości typu char do int.
char c;
printf("%c-%d",c,c);
/* wypisanie znaku i jego kodu dziesiętnie */
2. Przekazanie dalekiego wskaznika jako argumentu funkcji printf jest
równoważne przekazaniu dwóch liczb całkowitych.
char far *ptr;
printf("%04X:%04X",ptr);
/* wypisanie adresu znaku wskazywanego przez ptr */
/* w postaci Offset:Segment (w systemie MS-DOS) */
III Formatowane wejście/wyjście 39
3. Poniższy przykład jest podobny do poprzedniego. W modelu Large na-
zwa funkcji przekazana jako argument jest traktowana jak dalekie
wskazanie do tej funkcji.
printf("%04X:%04X",main);
/* adres funkcji main j.w. ( w modelu Large ) */
Wszystkie powyższe zastosowania funkcji printf są poprawne, chociaż wypro-
wadzane argumenty nie są takiego typu, dla jakiego zaprojektowana jest dana spe-
cyfikacja.
W celu dokładniejszego formatowania wyjścia można polecić umieszczenie ar-
gumentu w tzw. polu wyjściowym. Do określenia rozmiaru tego pola oraz spo-
sobu umieszczania w nim argumentu służą opcjonalne elementy, które mogą
pojawić się między znakiem % a specyfikatorem:
znak - (minus)
Poleca dosunięcie argumentu do lewej strony pola. Standardowo (gdy nie jest
użyty znak minus) argument jest dosuwany do prawej strony pola.
liczba
Określa minimalny rozmiar pola. Jeżeli długość wypisanego argumentu będzie
mniejsza niż szerokość pola, to zostanie on uzupełniony znakami spacji. Stan-
dardowo uzupełnianie następuję z lewej strony, ale w przypadku użycia znaku
minus spacje zostaną dodane z prawej strony. Jeżeli liczba określająca rozmiar
pola zaczyna się znakiem 0 (zero) to do uzupełniania zamiast spacji używana jest
cyfra 0 (uzupełnianie zerem jest możliwe tylko po lewej stronie, tzn. gdy nie
użyto znaku -).
Użycie zamiast liczby znaku * (gwiazdka) oznacza, że szerokość pola jest prze-
kazana jako kolejny argument (przed argumentem, którego dotyczy analizowana
sekwencja sterująca).
.liczba (liczba poprzedzona kropką)
W sekwencji wyprowadzającej ciąg znaków liczba ta oznacza maksymalną dłu-
gość wyprowadzanego łańcucha znaków.
W sekwencji wyprowadzającej liczbę zmiennoprzecinkową określa liczbę cyfr
wyprowadzanych po kropce dziesiętnej.
Użycie zamiast liczby znaku * (gwiazdka) oznacza, że odpowiednia wartość jest
przekazana jako kolejny argument (przed argumentem, którego dotyczy anali-
zowana sekwencja sterująca).
40 Wgłąb języka C
l (litera el)
Może ona wystąpić w sekwencji wyprowadzającej liczbę całkowitą i mówi, że na sto-
sie znajduje się liczba typu long a nie int jak przyjmowane jest domyślnie.
Wystąpienie w ciągu sterującym format napisu %% spowoduje wyprowadzenie znaku
% (procent). Ciągi, w których po znaku % nie występuje żaden z opisanych wyżej
specyfikatorów ani znak %, są traktowane różnie w różnych kompilatorach.
Oto kilka przykładów ilustrujących zastosowanie tych elementów specyfikacji,
które mogą budzić wątpliwości (w komentarzach podano wynik działania; znaki
| oznaczają granice pola:
printf("%*s",12,"ciąg próbny"); /* | ciąg próbny| */
printf("%*.*f",10,2,3.141); /* | 3.14| */
printf("%.4s","ciąg próbny"); /* |ciąg| */
printf("%-7.4s","ciąg próbny"); /* |ciąg | */
printf("%2s","ciąg próbny"); /* |ciąg próbny| */
printf("%07d",13); /* |0000013| */
printf("%-07d",13); /* |13 | */
printf("%lx",(long)-1); /* |ffffffff| */
printf("%.1d",10000); /* |10000| */
Funkcja printf zwraca wartość całkowitą równą liczbie wyprowadzonych zna-
ków. Jeżeli w czasie wyprowadzania wystąpił jakiś błąd, funkcja ta zwraca wartość
EOF.
2.2. Funkcja fprintf
Deklaracja:
int fprintf(FILE *plik,const char *format, ... );
Funkcja fprintf służy do wyprowadzania danych do pliku identyfikowanego przez
obowiązkowy argument FILE *plik. Jej działanie i interpretacja ciągu sterują-
cego format są identyczne jak dla funkcji printf. Wynikiem funkcji fprintf jest licz-
ba wyprowadzonych znaków albo wartość EOF w przypadku wystąpienia błędu.
Istnieją trzy wyróżnione, predefiniowane pliki, do których funkcja fprintf może
wyprowadzać informację:
K stdout  standardowe wyjście. Wywołanie funkcji fprintf z plikiem st- [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • angela90.opx.pl
  • Archiwum