Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

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
titleHuom

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}