printf
printf()-funktio
...
printf
printf-funktio on C:n perustulostuskäskyon C-kielen tulostuskäsky. Se on on esitelty stdio.h -tiedostossa, joten käsky #include<stdio.h>
pitää olla ohjelman alussa.
Esimerkki kokonaislukumuuttujan (int) tulostuksesta:
Funktion kutsu
Code Block |
---|
printf("muotoilumerkkijono", muuttuja1, muuttuja2, ...) |
No Format |
int auton_nopeus=120; // km/h printf("Auton nopeus on %d", auton_nopeus); |
Tai useamman muuttujan tulostus:
No Format |
---|
char Juttu[]="tulostan lukuja" ;
int Luku=5;
float Reaaliluku=45.7;
printf("\nJuttuja: %s numeroita %d Reaalilukuja %f",Juttu,Luku,Reaaliluku);
|
Tuloste on:
No Format |
---|
Juttuja: tulostan lukuja numeroita 5 Reaalilukuja 45.7
|
printf ja tulostuksen muotoilu
printf argumenttissa olevine koodien merkitys:
No Format |
---|
\b siirto vasemmalle (back space)
\f arkin poisto (form feed)
\n uusi rivi (line feed)
\r telan palautus (carriage return)
\t vaakatabulaattori (horisontal tab)
\" lainausmerkki (double quote)
\' heittomerkki (single quote)
\0 null (null)
\\vasemmalle vino viiva (Backslash)
\v pystysuora tapulointi (vertical tab)
\a hälytys (alert)
\N oktaalivakio (octal constant)
\xN heksades.vakio (hexadesimal constant)
|
Muuttujien määrittely
No Format |
---|
%d kokonaisluku, int
%f reaaliluku, float
%lf kaksoistarkkuuden reaaaliluku, double
%c yksittäinen merkki, char
%s merkkiono, char\[\]
|
Kaikki tulostusmuotoilut laitetaan lainausmerkien sisälle -merkistä printf-käsky tietää, että kyseessä on muotoilu.
Seuraavassa on esimerkki, jossa on käytetty printf-käskyn eri muotoja sekä tyypinmuunnoksia jne.
... tarkoittaa mahdollisia muita muuttujia
|
, jossa muotoilumerkkijono muodostuu seuraavista (yhdestä tai useammasta):
muotoilu | tyyppi | selitys | ||
---|---|---|---|---|
%c | char/int | yksi merkki | ||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d6ecb8e3-d5a7-41ff-9a0f-6364e803692c"><ac:plain-text-body><![CDATA[ | %s | char[] | merkkijono (päättyy NULL-merkkiin) | ]]></ac:plain-text-body></ac:structured-macro> |
%d | int/char | kokonaisluku | ||
%i | int/char | kokonaisluku | ||
%u | unsigned int/unsigned char | etumerkitön kokonaisluku | ||
%l | long | pitkä kokonaisluku | ||
%f | float | reaaliluku | ||
%lf | double | kaksoistarkkuuden reaaliluku |
, ja muuttuja on muuttujan nimi, jonka tyyppi vastaa %-muotoiluja.
Note | ||
---|---|---|
| ||
Parametrien ja %-merkkien lukumäärä tulisi olla sama! |
Tulostuksen muotoilu
kontrollinohjausmerkit:
merkki | selitys | englanniksi |
---|---|---|
\b | siirto vasemmalle | backspace |
\f | arkin poisto | form feed |
\n | uusi rivi | line feed |
\r | telan palautus | carriage return |
\t | vaakasuora tabulointi | horizontal tab |
\" | lainausmerkki | double quote |
\' | heittomerkki | single quote |
\0 | null | null |
vasemmalle vino viiva | backslash | |
\v | pystysuora tabulointi | vertical tab |
\a | hälytys | alert |
\N | oktaalivakio | octal constant |
\xN | heksadesimaalivakio | hexadesimal constant |
Kontrollinohjausmerkit kirjoitetaan lainausmerkkien sisään.
Esim.
Code Block |
---|
int Luku1, Luku2;
printf("Luku1\tLuku2\n"); // Tulostaa "Luku1" ja "Luku2" tabulaattorilla eroteltuna ja rivinvaihdon lopuksi.
printf("%d\t%d\n", Luku1, Luku2); // Tulostaa Luku1 ja Luku2 muuttujien arvon ruudulle tabulaattorilla eroteltuna ja rivinvaihdon lopuksi.
|
Lukujen muotoilu
Myös sitä miten luvut tulostuvat, voidaan kontrolloida.
muotoilu | tulostaa | tasaus | täyttömerkki | desimaalit |
---|---|---|---|---|
%4d | kokonaisluvun | 4 merkkiä | välilyönti | - |
%03d | kokonaisluvun | 3 merkkiä | nolla | - |
+%d | näyttää kokonaisluvun etumerkin, myös pos. | - | - | - |
%.3f | reaaliluvun | - | - | 3 |
%6.3f | reaaliluvun | 6 merkkiä | välilyönti | 3 |
Esimerkkejä
Kokonaislukumuuttujan (int) tulostus:
Code Block |
---|
int auton_nopeus=120; // km/h
printf("Auton nopeus on %d", auton_nopeus);
|
Useamman muuttujan tulostus:
Code Block |
---|
char Juttu[] = "tulostan lukuja"; // Merkkijonon luominen
int Luku = 5;
float Reaaliluku = 45.7;
printf("Juttuja: %s, numeroita %d, Reaalilukuja %f\n", Juttu, Luku, Reaaliluku);
|
Tuloste on:
No Format |
---|
Juttuja: tulostan lukuja, numeroita 5, Reaalilukuja 45.7
|
Esimerkki, jossa on käytetty printf()-funktion eri muotoja sekä tyypinmuunnoksia jne.
Code Block |
---|
/* |
No Format |
/*Ohjelma, joka tulostaa antamasi reaaliluvun kokonaislukuna, heksalukuna sekä oktaalilukuna. */ #include #include<stdio<stdio.h> #include #include<conio<conio.h> #include #include<stdlib<stdlib.h> void main(void) { double Reaaliluku; int int Kokonaisluku, Laskuri=0; char Merkkeja[100]; char char Merkki; // silmukka, jossa ollaan niin kauan kuin käyttäjä syöttää luvun 555 while while(Kokonaisluku != 555) { system system("cls"); // putsataan ruutu printf printf("Anna reaaliluku: "); do do { // tieto näppikseltä Merkki Merkki== getche(); // laitetaan Merkki, Merkkeja vektoriin Merkkeja Merkkeja[Laskuri] = Merkki; Laskuri Laskuri=Laskuri+1; // lisätään paikkaa vektorissa } while (Laskuri<8Laskuri < 8 && Merkki != 13); //päätetään Päätetään merkkijono Merkkeja[Laskuri] = '\0'; Laskuri Laskuri= 0; //muutetaan Muutetaan merkkijono reaaliluvuksi Reaaliluku Reaaliluku = atof(Merkkeja); printf printf("\nReaaliluku on %.3f ",Reaaliluku); // Muutetaan reaaliluku kokonaisluvuksi Kokonaisluku Kokonaisluku= (int) Reaaliluku; printf printf("\nKokonaisluku on %d ",Kokonaisluku); // Tulostus 16-kantaisena lukuna printf printf("\nHeksaluku on %x ",Kokonaisluku); // Tulostus 8-kantaisena lukuna printf printf("\nOktaaliluku on %o ",Kokonaisluku); printf printf("\nPaina Enter"); getch getch(); } } |