printf
...
printf()-funktio
...
on
...
C-kielen
...
tulostuskäsky.
...
Se
...
on
...
esitelty
...
stdio.h
...
-tiedostossa,
...
joten
...
käsky
...
#include<stdio.h>
...
pitää
...
olla
...
ohjelman
...
alussa.
...
Funktion
...
kutsu
Code Block |
---|
} printf("muotoilumerkkijono", muuttuja1, muuttuja2, ...); // ... tarkoittaa mahdollisia muita muuttujia {code} |
,
...
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 |
---|
|| muotoilu || tyyppi || selitys || | %c | char/int | yksi merkki | | %s | char\[\] | merkkijono (päättyy NULL-merkkiin) | | %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:title=Huom} Parametrien ja %-merkkien lukumäärä tulisi olla sama\! {note} h2. 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} 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. {code} h2. 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 | h2. Esimerkkejä h3. Kokonaislukumuuttujan (int) tulostus: {code} |
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);
{code}
h3. Useamman muuttujan |
Useamman muuttujan tulostus:
Code Block |
---|
tulostus: {code} char Juttu[] = "tulostan lukuja"; // Merkkijonon luominen int Luku = 5; float Reaaliluku = 45.7; printf("Juttuja: %s, numeroita %d, Reaalilukuja %f\n", Juttu, Luku, Reaaliluku); {code} |
Tuloste
...
on:
No Format |
---|
} Juttuja: tulostan lukuja, numeroita 5, Reaalilukuja 45.7 {noformat} h3. |
Esimerkki,
...
jossa
...
on
...
käytetty
...
printf()-funktion
...
eri
...
muotoja
...
sekä
...
tyypinmuunnoksia
...
jne.
Code Block |
---|
} /* Ohjelma, joka tulostaa antamasi reaaliluvun kokonaislukuna, heksalukuna sekä oktaalilukuna. */ #include <stdio.h> #include <conio.h> #include <stdlib.h> void main(void) { double Reaaliluku; int Kokonaisluku, Laskuri=0; char Merkkeja[100]; char Merkki; // silmukka, jossa ollaan niin kauan kuin käyttäjä syöttää luvun 555 while(Kokonaisluku != 555) { system("cls"); // putsataan ruutu printf("Anna reaaliluku: "); do { // tieto näppikseltä Merkki = getche(); // laitetaan Merkki, Merkkeja vektoriin Merkkeja[Laskuri] = Merkki; Laskuri=Laskuri+1; // lisätään paikkaa vektorissa } while (Laskuri < 8 && Merkki != 13); // Päätetään merkkijono Merkkeja[Laskuri] = '\0'; Laskuri = 0; // Muutetaan merkkijono reaaliluvuksi Reaaliluku = atof(Merkkeja); printf("\nReaaliluku on %.3f ",Reaaliluku); // Muutetaan reaaliluku kokonaisluvuksi Kokonaisluku = (int) Reaaliluku; printf("\nKokonaisluku on %d ",Kokonaisluku); // Tulostus 16-kantaisena lukuna printf("\nHeksaluku on %x ",Kokonaisluku); // Tulostus 8-kantaisena lukuna printf("\nOktaaliluku on %o ",Kokonaisluku); printf("\nPaina Enter"); getch(); } } {code} |