Új hozzászólás Aktív témák

  • Rickazoid

    addikt

    Írnék egy C programot, de van egy hiba, aminek nem találom az okát már vagy másfél órája.
    Itt a forrás (egyelőre csak egy példa, úgymond vázlat program, erre épülne majd egy jóval bonyolultabb):

    ...
    int b=1;
    char c;
    ...
    while(b==1)
    {
    c=getchar();
    switch(c)
    {
    case '1':
    {
    i=1;
    printf("The number is %i\n",i);
    b=0;
    break;
    }


    case '2':
    {
    i=2;
    printf("The number is %i\n",i);
    b=0;
    break;
    }

    case '3':
    {
    i=3;
    printf("The number is %i\n",i);
    b=0;
    break;
    }

    case '4':
    {
    i=4;
    printf("The number is %i\n",i);
    b=0;
    break;
    }

    default:
    {
    printf("That is not a menu option, please try again: ");
    b=1;
    break;
    }

    }
    }

    A problémám az lenne, hogy a default parancsai duplán hajtódnak végre. Mindig duplán írja ki a "That is not a menu option, please try again: " szöveget. Megpróbáltam írni a getchar() elé és mögé egy szöveget printf-fel, de a defaultra azokat is duplán írta ki, jól láthatóan egyszer átugrotta a getchar()-t. Próbáltam kivenni a ciklusból a ciklus elé és újra betenni a defaulthoz, de úgy is szimplán átugrotta egyszer. Nem értem, de nagyon nem. Próbáltam getchar() helyett scanf()-et is, de azt is átugorja egyszer, így annál is dupla lesz a default végrehajtódása. Mitől lehet ez?

    [ Szerkesztve ]

    Erkölcstelen csíkot húzni a másik krumplifőzelékébe csak azért, hogy legyen egy szünet.

Új hozzászólás Aktív témák