previous next Up Title Contents Index

Esimerkki 2

Tämä on hieman vaativampi esimerkki virheentarkistuksen toteuttamiseksi.

Ohjelmassa tarkistetaan, että syöte on kokonaisluku.

Liukulukusyöte samoin kuin kirjaimien syöttäminen tai tyhjän rivin syöttäminen aiheuttavat virheilmoituksen.

Virheen huomaaminen perustuu siihen, että sscanf()-funktio palauttaa arvonaan onnistuneiden syötteiden lukumäärän, jonka tässä esimerkissä pitää olla täsmälleen yksi.

Jos lukuarvo on pienempi tai suurempi, käyttäjä on syöte on virheellinen.

    #include <stdio.h>
    #include <conio.h>
    void main(void)
    {
        int luku; 
        int ok_lkm; /* onnistuneiden syötteiden lkm */
        char rivi[128]; /* syötetty rivi luetaan tähän */
        char roska; /* mahdollinen ylimääräinen syöte */
        clrscr();
        printf ("Anna kokonaisluku: ");
        gets(rivi);
        ok_lkm = sscanf (rivi,"%d%c",&luku,&roska);
        while (ok_lkm != 1) 
        { 
            printf ("Virheellinen syöte. Anna uusi: ");
            gets(rivi);
            ok_lkm = sscanf (rivi,"%d%c",&luku,&roska); 
        }
        printf ("Annoit luvun %d",luku);
    } 

previous next Up Title Contents Index