printf
printf ime je naredbe za ispis obično dostupne na svim *nix operacijskim sustavima kao naredbe sustava, te naredbe za ispis u mnogim programskim jezicima. Uzrok raširenosti ove naredbe leži u širokim mogućnostima oblikovanja ispisa prema željama programera odnosno najčešće sukladno nekim tipičnim zahtjevima, npr:
- brojevi, kad je riječ o novcu, bankovnim ili drugim računima odnosno transankcijama obično se potpisuju jedan ispod drugoga tako da su jedinice ispod jedinica, desetice ispod desetica, stotice ispod stotica itd.; brojke su obično pozicionirane uz desnu marginu
- nadnevci također imaju uobičajene načine ispisa, od kojih je u hrvatskom jeziku najčešći oblik
dan. mjesec godina.
ako je mjesec napisan slovima, odnosnodan. mjesec. godina.
ako je mjesec napisan brojkom
printf naredba ima sljedeći oblik: printf "format" parametri
. Format se definira na sljedeći način:
%[parametar][zastavice][širina ispisa][.preciznost][duljina]tip
Parametri u uglatim zagradama su opcionalni, samo su dva parametra obvezna, znak % i tip podatka koji se ispisuje.
slovo | tip predstavljen slovom | primjer |
---|---|---|
d | (dekadski) cijeli broj s predznakom | %d - ispiši kao dekadski cijeli broj
%6d- ispiši kao dekadski cijeli broj širine najviše 6 znamenaka |
u | (dekadski) cijeli broj bez predznaka (unsigned) | |
o | oktalni cijeli broj bez predznaka | |
x | heksadekadski cijeli broj bez predznaka | |
e,f,g | broj s pomičnim zarezom, s ili bez eksponenta | %6.2f - ispis realnog broja najveće širine 6 znamenaka, s dvije znamenke iza decimalne točke |
c | ispis jednog znaka (char) | %c |
s | ispis niza znakova (string) | %s |
Napomena - ovo je nepotpuna tablica, navedeni su samo najčešći tipovi.
printf("Boja je %s, cijeli broj 1: %d, cijeli broj 2: %05d, heksadekadski broj %#x, racionalni broj %5.2f, cijeli dekadski broj bez predznaka %u.\n",
"plava", 123456, 89, 255, 3.14159, 250);
Gornja C naredba će ispisati (uključujući znak za novi redak - \n):
Boja je plava, cijeli broj 1: 123456, cijeli broj 2: 00089, heksadekadski broj 0xff, racionalni broj 3.14, cijeli dekadski broj bez predznaka 250.
Java od inačice 1.5 ima naredbu printf kao dio java.io.PrintStream klase (tj. printf je dio standardnog Java API-ja od inačice 1.5).
// Ispis "Hrvatska wikipedija" na standardni izlaz
System.out.printf("%s, %s", "Hrvatska", "wikipedija");
print("Umnožak pet i šest je {0}.".format(5*6))
Umnožak pet i šest je 30.
printf naredba je ugrađena u bash ljusku.[1]
$ JEZIK=Hrvatska
$ PROJEKT=wikipedija
$ printf "%s %s\n" "$JEZIK" "$PROJEKT"
Hrvatska wikipedija
- AMPL
- awk (preko sprintf-a)
- Unix ljuske: Korn shell (ksh), Bourne again shell (bash), Z shell (zsh)
- C
- C++ (osim printf-a posjeduje i mogućnost lakog ispisa uporabom shift operatora na iostream)
- Objective-C
- Clojure
- Common Lisp
- D
- Elixir
- F#
- GNU MathProg
- GNU Octave
- G (LabVIEW)
- Go
- Haskell
- J
- Java (od inačice 1.5)
- Lua (string.format)
- Maple
- MATLAB
- Mythryl
- OCaml
- Pascal
- PARI/GP
- PHP
- Perl
- Python (Python 2 preko % operatora, Python 3 uporabom print funkcije s format "parametrizatorom")
- R
- Red/System
- Ruby
- Rust
- Tcl (uporabom format naredbe)
- Transact-SQL (uporabom xp_sprintf-a)
- Vala (uporabom print() i FileStream.printf()-a)
- ↑ Ken O. Burtch, Linux Shell Scripting with Bash, ISBN 0-672-32642-6, str. 356
- https://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - C printf specifikacija
- https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax - java.util.Formatter klasa koja interpretira printf pozive
- https://php.net/manual/en/function.printf.php - PHP printf specifikacija
|