Märkus: altoodu on vaid väike osa C-keele sisestus/väljastus funktsioonidest. Täielikuma ülevaate saab näiteks GNU C käsiraamatust
Täpsemat infot GNU C sisestus/väljastus funktsioonidest leiab näiteks:


Sisestus: Väljastus:
Näide
Harjutus


Vormindatud sisestus - funktsioon scanf
Prototüüp asub failis
stdio.h

scanf ("vorming", &muutuja1, &muutuja2, ...)

Funktsiooni scanf parameetriteks on vorming (esimene vorminguelement on % ja vorming lõpeb sisestavatele muutujatele vastava tüübitähistusega) ning sisestatavate muutujate aadressite loetelu.

Kasutmise näited:
  • Täisarvu sisestamine:

    scanf("%d",&taisArv);
    /*
       %d on vorming, mis näitab, et sisestatav arv on täisarv(int,
       short, long);

       täisarvude puhul võime kasutada ka vormingut %ld;
       taisArv on sisestava muutuja nimi;
       muutuja nime eest olev ampersand & on kohustuslik, see suunab
       sisestatud märgijada muutuja taisArv aadressile;
    */

  • Murdarvu sisestamine:

    scanf("%lf",&murdArv);
    /*
       %lf on vorming, mis näitab, et sisestatav arv on murdarv(float,
       double);

       murdarvude puhul võime kasutada ka vormingut %f;
       murdArv on sisestava muutuja nimi;
       muutuja nime eest olev ampersand & on kohustuslik, see suunab
       sisestatud märgijada muutuja murdArv aadressile;
    */

  • Märkmuutuja sisestamine:

    a) Ühest sümbolist koosneva märkmuutuja sisestamine:

    scanf("%c",&yksSymbol);
    /*
       %c on vorming, mis näitab, et sisestatav väärtus on ühest
       sümbolist koosnev märkmuutuja (char);

       yksSymbol on sisestava muutuja nimi;
       muutuja nime eest olev ampersand & on kohustuslik, see suunab
       sisestatud märgijada muutuja murdArv aadressile;
    */

    b) Mitmest sümbolist koosneva märkmuutuja sisestamine:

    scanf("%s",pikkSona);

    /*
       %s on vorming, mis näitab, et sisestatav väärtus on mitmest
       sümbolist koosnev märkmuutuja (char[sümbolite arv - 1]);

       pikkSona on sisestava muutuja nimi;
       NB! mitmest sümbolist koosneva märkmuutuja sisestamisel ei ole
       vaja kasutada ampersandi &, kuna märkmuutuja osutab ise selle
       aadressile kus ta asub
    */


Vormindamata sisestus - funktsioon getchar()

Funktsioon ühe sümboli sisestamiseks:

getchar(yksSymbol);


Vormindamata sisestus - funktsioon gets()

Funktsioon sümbolijada sisestamiseks (get string):

gets (symboliJada);

NB!
Funktsiooni gets() kasutamisel peab olema väga tähelepanelik, kuna sellel ei ole piiranguid sisestatava sümbolijada pikkuse osas. Eelistada tasub funktsiooni getline() kasutamist.



Vormindatud väljastus - funktsioon printf
Prototüüp asub failis stdio.h

printf("vorming", muutuja1, muutuja2, ...)

Funktsiooni printf parameetriteks on vorming (esimene vorminguelement on % ja vorming lõpeb väljastatavate muutujatele vastava tüübitähistusega) ning väljastatavate muutujate loend.

Kasutamise näited:
  • Täisarvu väljastamine:

    printf("Täisarv on: %d",taisArv);
    /*
       %d on vorming, mis näitab, et väljastatav arv on täisarv (int,
       short, long);

       täisarvude puhul võime kasutada ka vormingut %ld;
       taisArv on väljastatava muutuja nimi;
    */

  • Murdarvu väljastamine:

    printf("Murdarv on %lf",murdArv);
    /*
       %lf on vorming, mis näitab, et väljastatav arv on
       täisarv (double, float);

       murdarvude puhul võime kasutada ka vormingut %f;
       murdArv on väljastatava muutuja nimi;
    */

    printf("Vormindatud murdarv on %-7.2lf",murdArv);
    /*
       %lf on vorming, mis näitab, et sisestatav arv on täisarv
       (double, float);
       murdarvude puhul võime kasutada ka vormingut %f;
       murdArv on väljastatava muutuja nimi;

       %-7.2lf on  väljastuse vorming:
         - tähendab vasakjoondust
         7 näitab mitu kohta ekraanil antakse väljastatavale muutujale
         2 näitab mitu kohta on peale koma 

    */

  • Märkmuutuja väljastamine

    a) Ühest sümbolist koosneva märkmuutuja väljastamine:

    printf("Üks sümbol on %c",yksSymbol);
    /*
       %c on vorming, mis näitab, et väljastatav
    väärtus on ühest
       sümbolist koosnev märkmuutuja (char);

       yksSymbol on väljastatava muutuja nimi;
    */

    b) Mitmest sümbolist koosneva märkmuutuja sisestamine:

    printf("Mitmest sümbolist koosnev märkmuutuja on %s",pikkSona);


    /*
       %s on vorming, mis näitab, et väljastatav väärtus on mitmest
       sümbolist koosnev märkmuutuja (char[sümbolite arv - 1]);

       pikkSona on sisestava muutuja nimi;
    */

Ühes väljastuslauses võib väljastada ka mitut muutujat:

printf ("Täisarv on %d, murdarv on %lf, symbol on %c, sõna on %s", taisArv, murdArv, yksSymbol, pikkSona);




Vormindamata väljastus - funktsioon putc()

Funktsioon ühe sümboli väljastamiseks (put char):

putc(yksSymbol);


Vormindamata väljastus - funktsioon puts()

Funktsioon ühe sümbolitejada väljastamiseks (put string), lõppu tuleb reavahetus:

puts(symboliteJada);

Kasutamise näide:

puts("See on üks rida");




Näide

#include <stdio.h>

/*
   Programm tervitab kasutajat, küsib kasutaja vanuse ning kasutaja
   sünniaasta, arvutab kasutaja vanuse ning väljastab kasutaja nime ja
   väljaarvutatud kasutaja vanuse
*/

//konstant aasta väärtusega 2010
const int
jooksevAasta = 2010;

int
main(void)
{
    /*
       Muutujate deklareerimine:
        nimi - kasutaja nimi, sisestab kasutaja,
               märkmuutuja pikkusega 20;
        synniAasta - kasutaja sünniaasta, sisestab kasutaja,
                täisarv;
        sinuVanus - kasutaja vanus, arvutab programm, täisarv;
   */ 
    char sinuNimi[21];
    int synniAasta, sinuVanus;
   
    //väljastatakse tervitus kasutajale ja küsitakse tema  nime
    printf("Tere!\n");
    printf("Mina olen arvuti. Mis on sinu nimi?\n");

    //kasutaja nime sisestus; kasutaja tipib klaviatuuril oma nime ja
    //vajutab ENTER klahvi; muutuja sinuNimi saab väärtuseks
    //sisestatud sümbolirea
    scanf("%s", sinuNimi);

    //küsitakse kasutaja sünniaastat
    printf("Tore! Mis aastal syndisid?\n");

    //kasutaja sünniaasta sisestus; kasutaja tipib klaviatuuril oma
    //sünniaasta 
ja vajutab ENTER klahvi; muutuja synniAasta saab
    //väärtuseks
sisestatud arvu

    scanf("%d",&synniAasta);

    //vanuse arvutamine
    sinuVanus=jooksevAasta-synniAasta;

    //tulemuse väljastamine; väljastakse märkmuutuja ja täisarv
    printf("\nTere %s, sa oled %d aastat vana\n", sinuNimi, sinuVanus);

    return 0;
}


Toodud programmi käivitamisel toimub programmi ja kasutaja vahel järgmine dialoog (rasvane jutt on see, mille väljastab arvuti, kaldkirjas jutt on see, mille sisestab kasutaja)

Tere, mina olen Arvuti! Mis on sinu nimi?
Maali
Tore! Mis aastal sa syndisid?
1985
Tere, Maali, sa oled 25 aastat vana.




Harjutus

Koosta programm, mille käivitamisel toimuks järgmine dialoog kasutajaga
(rasvane jutt on see, mille väljastab arvuti, kaldkirjas jutt on see, mille sisestab kasutaja):

Teeme nyyd veidi matemaatikat.
Siseta kaks arvu, mida tahad liita.
    Sisesta esimene arv: 13
    Sisesta teine arv: 23
Arvude 13 ja 23 summa on 46.
Siseta kaks arvu, mida tahad korrutada.
    Sisesta esimene arv: 5
    Sisesta teine arv: 3
Arvude 5 ja 3 korrutis on 15.
Nyyd jagame!
    Sisesta jagatav: 17
    Sisesta jagaja: 6
Kui jagame 17.00 arvuga 6.00 siis on tulemus 2.83
Trigonomeetria!
Sisesta arv x (radiaanides), ma arvutan sulle sin(x): 4
Sin (4.00) on -0.75680


NÄPUNÄITEID:

  • kõik kasutatavad arvud on muutujad
    • liitmisel ja korrutamisel võid kasutada nii täisarve (int, short või long) kui murdarve (float, double)
    • jagamisel kasuta murdarve (float, double)
    • siinuse arvutamisel kasuta murdarve (float, double)
  • deklareeri kindlasti kõik kasutatavad muutujad
    • kasutaja poolt sisestatavad muutujad
    • programmi poolt tulemuste jaoks kasutatavad muutujad (ehk siis summa, korrutis, jagatis, siinus)
  • reavahetuse saad \n abil
  • kõik arvutused teostatakse kasutaja poolt sisestatud arvudega
  • muutujate nimed proovi valida nii et nimes kajastuks muutuja sisu
  • kuna siinust arvutava funktsiooni sin kasutamiseks peame kasutama teeki math.h siis lisa programmi algusesse: #include <math.h>