Cau, chci se zeptat jestli nekdo nevite jak v C(pouzivam Dev C++) udelat napr volbu ano/ne "[A/N]" tak ze stisknu A !!bez potvrzeni enterem!!. proste jen stisknu klavesu a program pokracuje. Zkousel jsem vraceni do bufferu(ungetc) ale nepomaha. Prosim vas poradte! Diky za pripadnou odpoved.
Fórum › C / C++
Reakce na stisk tlacitka bez potvrzeni enterem
Jestli to dobře chápu, tak se snažíte udělat konzolovou aplikaci, která okamžitě reaguje na stisk určitých(A/N) kláves. Nejsem si na 100% jistý, ale budete muset sáhnout po API vašeho operačního systému. Pravděpodobně bude nejlepší, když trochu víc upřesníte váš dotaz.
polo napsal:
Cau, chci se zeptat jestli nekdo nevite jak v C(pouzivam Dev C++) udelat napr volbu ano/ne "[A/N]" tak ze stisknu A !!bez potvrzeni enterem!!. proste jen stisknu klavesu a program pokracuje. Zkousel jsem vraceni do bufferu(ungetc) ale nepomaha. Prosim vas poradte! Diky za pripadnou odpoved.
#include <conio.h> // neni ve standardu
...
printf("Chces pokracovat? A/N");
while(toupper(getch()) != 'A')
fprintf(stderr, "nOpakujte znovu. A/N");
No upresnit...: Takze mas konzolovou aplikaci a dojde na rozhodovani napr: Stiknete [A] pro vypis. Pri stisku A se provede treba printf("ahoj"); Zduraznuju stisknu A a provede se prikaz. To A nepotvrzuju enterem-proste jakmile stiknu A okamzite se neco provede. Ja delam v C asi rok-vicemene spise skola, ale myslel jsem ze tohle nebude problem ne? K tomu 2.prispevku ja do API absolutne nevidim nikdy jsem s tim nedelal-bohuzel:(( a fprintf je zapis do souboru stderr-ukazatel na typ FILE... Ja potrebuju uplne tu nejobycejnejsi vec. Po stisku klavesy(bez potvrzeni enterem)->provedeni jakehokoliv prikazu-at obycejny vypis nebo cokoliv jinyho.
polo napsal:
No upresnit...: Takze mas konzolovou aplikaci a dojde na rozhodovani napr: Stiknete [A] pro vypis. Pri stisku A se provede treba printf("ahoj"); Zduraznuju stisknu A a provede se prikaz. To A nepotvrzuju enterem-proste jakmile stiknu A okamzite se neco provede. Ja delam v C asi rok-vicemene spise skola, ale myslel jsem ze tohle nebude problem ne? K tomu 2.prispevku ja do API absolutne nevidim nikdy jsem s tim nedelal-bohuzel:(( a fprintf je zapis do souboru stderr-ukazatel na typ FILE... Ja potrebuju uplne tu nejobycejnejsi vec. Po stisku klavesy(bez potvrzeni enterem)->provedeni jakehokoliv prikazu-at obycejny vypis nebo cokoliv jinyho.
K tomu memu. Neni to zadne WinAPI, jen to jsou vsechno prikazy standardniho C(az na funkci getch). V mem prikladu slo prave jen o tuto funkci. Bez urazky, ale myslel jsem, ze vas to, jako tazatele, napadne vyzkouset.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
int pole[] = {1,2,3,4,5};
printf("Stiskni A pro vypis.");
int c = getch(); // precte znak z vstupni fronty
if(toupper(c) == 'A')
{
// tohle si nahradte cim uznate za vhodne
int j;
for ( j = 0; j < sizeof(pole)/sizeof(pole[0]); ++j)
printf("n%d-ty clen je roven %d.", j, pole[j]);
putchar('n'); // novy radek
}
getchar();
return 0;
}
Odpoved je v Jurove prispevku ;o) Jdi na to pres funkci getch() deklarovanou v hlavickovem souboru conio.h. To by melo byt to, co potrebujes...
UPDATE: Aha, koukam, ze uz to rozepsal, takze ja uz nemusim. :o)
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Reakce vlákna na stisk tlačítka — založil Pelcik
Odeslat data bez tlačítka — založil omorok
Formular reagujici bez stisknuti tlacitka — založil Iveta
Button - aktivace enterem — založil DoDo
Moderátoři diskuze