...
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
|
, 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
kontrollinohjausmerkitprintf argumenttissa olevine koodien merkitys:
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 |
Muotoilumerkkijono
muotoilu | tyyppi | selitys |
---|---|---|
%c | char | yksi merkki |
%s | char[] | merkkijono (päättyy NULL-merkkiin) |
%d | int | kokonaisluku |
%i | int | kokonaisluku |
%u | unsigned int | etumerkitön kokonaisluku |
%l | long | pitkä kokonaisluku |
%f | float | reaaliluku |
%lf | double | kaksoistarkkuuden reaaliluku |
Kaikki tulostusmuotoilut laitetaan lainausmerkien sisälle -merkistä printf-käsky tietää, että kyseessä on muotoilu.
Esimerkkijä
...
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("\nJuttujaJuttuja: %s, numeroita %d, Reaalilukuja %f\n", Juttu, Luku, Reaaliluku); |
...
No Format |
---|
Juttuja: tulostan lukuja, numeroita 5, Reaalilukuja 45.7 |
...
Esimerkki, jossa on käytetty printf()-
...
funktion eri muotoja sekä tyypinmuunnoksia jne.
No Formatcode |
---|
/* 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(); } } |