Reklama
Wizyt
Dzisiaj: 36Wszystkich: 157650

Funkcja printf

Informatyka » zakres rozszerzony » Wprowadzanie danych i wyprowadzanie wyników » Funkcja printf

 

Funkcja printf wysyła sformatowany ciąg znaków i wartości zmiennych do standardowego strumienia wyjściowego (stdout).

Składnia polecenia

printf(format, wyrażenie, wyrażenie, ... ) ;

gdzie:
      format - łańcuch formatujący
      wyrażenie - 1 lub więcej parametrów, ktrórych wartości mają być sformatowane zgodnie z kodem podanym w parametrze format.  

 

Specyfikacja formatu:

%[znacznik][szerokość][.precyzja][prefiks]typ


Każda specyfikacja formatu zaczyna się od znaku % i zawiera co najmniej typ. Pozostałe pola specyfikacji formatu są opcjonalne. Wszystkie pola formatu mają stałą pozycję w łańcuchu formatującym: można je opuścić, ale jeżeli występują, to muszą byc podane w kolejności takiej, jak w powyższym zapisie.

 

znacznik

Jeden lub więcej znaków określających wyrównanie, zapis znaku liczby i kropki dziesiętnej:

  • -    - wyrównanie wyniku do lewej strony z uzupełnieniem z prawej spacjami. Domyślnie wynik jest wyrównywany do prawej i uzupełniany z lewej spacjami lub zerami.
  • +    - liczba zawsze poprzedzana znakiem + lub -. Domyślnie: znak + jest pomijany.
  • spacja  - liczby dodatnie poprzedzane są spacją. Domyślnie: nie ma żadnych odstępów.
  • #       dla typów o, x, X drukowany jest odpowiednio przedrostek O, Ox, OX;  

               dla typów e, E, f wymusza drukowanie kropki dziesiętnej;

               dla typów g i G - drukuje kropkę dziesiętną i wszystkie nieznaczące zera.

szerokość   

Minimalna liczba znaków użytych do zapisu. Liczby krótsze uzupełniane są do podanej szerokości spacjami z lewej strony.

Jeżeli szerokość podamy w formie 0n, to uzupełnia z lewej strony zerami. Jeżeli liczba jest dłuższa od pola szerokość, to będzie miała przydzielona niezbędną ilość znaków, aby wyświetliła się cała, niezależnie od wartości pola szerokość

 

.precyzja    

Maksymalna ilość znaków lub miejsc po kropce dziesiętnej do zapisu. Dla liczb całkowitych - minimalna ilość użytych cyfr.

  • typy: d, i, o, u, x, X - wartości krótsze dopełniane są z lewej strony zerami, dłuższe - zawsze wyświetlane w całości;
  • typy: e, E, f - ilość miejsc po kropce dziesiętnej;
  • typy: g, G - maksymalna liczba cyfr znaczących;
  • typ c - bez znaczenia;
  • typ s - maksymalna ilość wyświetlanych znaków (reszta jest obcinana).


prefiks  

Modyfikacja domyślnych wartości dla pola typ:

  • h    - podajemy dla typów całkowitych (d, i, o, u, x, X), aby zaznaczyć, że parametr jest liczbą typu short int
  • l     - podajemy dla typów całkowitych (d, i, o, u, x, X), aby zaznaczyć, że parametr jest liczbą typu long int
  • L    - podajemy dla typów rzeczywistych (e, E, f, g, G), aby zaznaczyć, że parametr jest liczbą typu long double

 

typ    

Typ konwersji argumentu:

Liczby:

  • d - całkowita liczba dziesiętna ze znakiem
  • i - całkowita liczba dziesiętna ze znakiem
  • u - całkowita liczba dziesiętna bez znaku
  • o - całkowita liczba ósemkowa bez znaku
  • x - całkowita liczba szesnastkowa bez znaku (z cyframi: a, b, c, d, e, f)
  • X - całkowita liczba szesnastkowa bez znaku (z cyframi: A, B, C, D, E, F)
  • f - liczba rzeczywista ze znakiem w formacie [-]dddd.dddd
  • e - liczba rzeczywista ze znakiem w formacie [-]d.dddd e [+/-]ddd
  • E - to samo co e, ale jako znak wykładnika występuje litera E
  • g - liczba rzeczywista ze znakiem w formacie e lub f: wybierany jest format pozwalający na bardziej zwięzłe wyprowadzenie wyniku
  • G - to samo co g, ale jako znak wykładnika występuje litera E

Znaki:

  • c - pojedyńczy znak
  • s - łańcuch znaków zakończony znakiem NULL
  • % - znak %

 

 

Przykład zastosowania funkcji printf

int main()
{
    printf( "Znaki: %c, %cn", 'h', 68 );
    printf( "Liczby (1): %d %in", 23, 45 );
    printf( "Liczby (2): %5d %0*dn", 1234, 8, 5678 );
    printf( "Lancuchy znakow: %s, %sn", "napis pierwszy", "napis drugi" );
    printf( "Systemy liczbowe: %d %x %o %#x %#o n", 250, 250, 250, 250, 250 );
    printf( "Liczby zmiennoprzecinowe: %4.2f %+.0e %E n", 2.1254, 2.1254, 2.1254 );
    printf( "Liczba bez  zer wiodących: %7d n", 1387 );
    printf( "Liczba z zerami wiodącymi: %07d n", 1387 );
    return 0;
}

Efekt działania programu

Znaki: h, D
Liczby (1): 23 45
Liczby (2):  1234 00005678
Lańcuchy znaków: napis pierwszy, napis drugi
Systemy liczbowe: 250 fa 372 0xfa 0372
Liczby zmiennoprzecinowe: 2.13 +2e+000 2.125400E+000
Liczba bez  zer wiodących:    1387
Liczba z zerami wiodącymi: 0001387

Reklama