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
Oblik naredbe i definicija formata
urediprintf 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.
Tipovi
uredislovo | 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.
C
uredi 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
urediJava 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");
Python
urediprint("Umnožak pet i šest je {0}.".format(5*6))
Umnožak pet i šest je 30.
Unix
urediprintf naredba je ugrađena u bash ljusku.[1]
$ JEZIK=Hrvatska
$ PROJEKT=wikipedija
$ printf "%s %s\n" "$JEZIK" "$PROJEKT"
Hrvatska wikipedija
Popis programskih jezika koji imaju printf naredbu (ili njen ekvivalent)
uredi- 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)
Izvori
uredi- ↑ Ken O. Burtch, Linux Shell Scripting with Bash, ISBN 0-672-32642-6, str. 356
Vanjske poveznice
uredi- http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html - C printf specifikacija
- http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax - java.util.Formatter klasa koja interpretira printf pozive
- http://php.net/manual/en/function.printf.php - PHP printf specifikacija