Avatar billede joshin Nybegynder
08. maj 2002 - 10:56 Der er 11 kommentarer og
1 løsning

c++: getch() bliver i buffer og skrives ved cin (visual 6.0)

Hej,
Jeg sidder med en consol app, hvor jeg bruger getch() for at læse et menuvalg. Derefter skal indlaæses en brugernavn, her bruger jeg cin >> men den char der tastes til getch() bliver vist, kan dette undgås ?
(tømnig af buffer ?)

pseudokode:

valg = getch()-48;
.
.
swtich (valg)
.
.
cout << "Indtast... ";
cin >> navn;
Avatar billede chries Nybegynder
08. maj 2002 - 11:00 #1
hvad koder du i ? jeg bruger visual c++ og det virker 100%

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>

int main(int argc, char* argv[])
{
    char navn[128], valg;

    valg = getch();

    cout << "Indtast... ";
    cin >> navn;
    return 0;
}
Avatar billede joshin Nybegynder
08. maj 2002 - 11:09 #2
Jeg koder i visual c++ 6.0
med dit eks. får jeg en skærm der viser:

Indtast...5
når jeg trykker på 5 før Indtastnig skal starte
Avatar billede chries Nybegynder
08. maj 2002 - 11:11 #3
bruger også visual 6 c++ (win2k). har du den nyeste service pack ?
Avatar billede chries Nybegynder
08. maj 2002 - 11:13 #4
Avatar billede joshin Nybegynder
08. maj 2002 - 11:21 #5
Henter !
(jeg kører på win95 idag)
Avatar billede joshin Nybegynder
08. maj 2002 - 12:07 #6
no good ! jeg får stadig tallet ud
Avatar billede chries Nybegynder
08. maj 2002 - 12:27 #7
hvis det kode jeg har skrevet ikke virker hos dig, kan jeg snart kun skubbe skylden på:
1. Ikke har rebuildet det hele
2. Ikke genstartet
3. Win95 :-)

eneste fuske metode jeg har på lager er ignore:

cin.ignore(1); (fjern 1 tegn fra buffer)


Nogen andre der har idéer ?
Avatar billede joshin Nybegynder
08. maj 2002 - 12:37 #8
cin.ignore(1);
fjerne fra inputet men ikke fra skærmen
Avatar billede chries Nybegynder
08. maj 2002 - 12:40 #9
den skulle altså ikke skrive noget (getch). Du må fuske et eller andet :-)

_getch, _getche
Get a character from the console without echo (_getch) or with echo (_getche).
Avatar billede codemon Nybegynder
08. maj 2002 - 23:59 #10
Hvad med while(!kbhit());
Avatar billede jpk Nybegynder
14. maj 2002 - 09:07 #11
Prøv at tilføje:
fflush(stdin);
efter
valg = getch();
Avatar billede jpk Nybegynder
14. maj 2002 - 09:11 #12
En anden mulighed er cscanf

#include <conio.h>

int main(int argc, char* argv[])
{
    int c;
    char str[81];

    printf("Press a key");
    c = getch();
    printf("\nYou pressed \'%c\'\n", c);
   
   
    printf("Enter something : ");
    cscanf("%s", str);
    printf("\nYou entered \"%s\"\n", str);
    return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester