Hirdetés

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

  • Karma
    félisten

    Sziasztok!

    Egy program részeként olyasmit szeretnék létrehozni, hogy elindul egy visszaszámláló ciklus, ami vagy akkor lép ki amikor lejár az idő, vagy akkor ha lenyomok egy bizonyos billentyűt. Viszont a program tárolja is el annak a lenyomott billentyűnek az értékét, így ahogy néztem a khbit() függvény kiesik.

    Ez a kód jelenleg működik is (addig fut amíg le nem telik az idő, vagy nem nem nyomok egy billentyűt), csak a while után én meg is szeretném valahogyan vizsgálni a leütött karaktert.
    scanf() / getch() / getchar() pedig azért esik ki, mert a következő karakterleütésig szünetelteti a program futását.

    #include <stdio.h>
    #include <time.h>
    #include <conio.h>
    int main ()
    {
    time_t seconds;
    time_t seconds2;

    seconds = time(NULL)+3;
    seconds2 = 0;
    while (!kbhit() && seconds2!=seconds){
    printf("töltelékszöveg, hogy lássam, hogy működik.\n");
    seconds2=time(NULL);
    }
    return 0;
    }

    Onnantól kezdve, hogy conio.h (brrr Borland), elég egyszerűen meg lehet oldani. A getch() visszaadja az utoljára lenyomott karaktert, ami a kbhit után nem fog várakozni, hanem visszaadja az utoljára lenyomottat.

    Mondjuk szerintem gondold át egy kicsit, hogy mit csinál a != operátor abban az esetben, ha valamilyen okból túlszalad a seconds2 változód a seconds-on, és nem kéne helyette valami más operátor.

    Harmadrészt egy középiskolai háziban mondjuk szódával elmegy a busy wait, de afölött már utána kéne nézni, hogy lehet várakozni while ciklusban 100%-on pörgetett CPU nélkül.

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