Avatar billede zapzie Nybegynder
29. januar 2003 - 14:06 Der er 28 kommentarer og
3 løsninger

C++: "automatisk enter" ved brug af cin

Hvis jeg nu vil spørge brugeren af mit program, hvad han nu vil! fx

char hvadNu;
cout << "Hvad vil du nu?\n";
cout << "Q = quit\n";
cout << "S = status\n";
cout << "V = videre\n";
cin >> hvadNU;
if(hvadNu == Q)
  bla bla bla
osv.

Her skal der jo kun tastes et tegn ind, men hvordan gør jeg så man ikke skal trykke "enter" efter indtastningen?
Avatar billede soreno Praktikant
29. januar 2003 - 14:16 #1
F.eks. sådan her:

#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char **argv)
{
    cout << "Indtast et bogstav: ";
    char in = getch();
    cout << endl << "Du skrev: " << in << endl;
    return 0;
}
Avatar billede zapzie Nybegynder
29. januar 2003 - 14:34 #2
Ved det ikke helt.. for det du skriver der kan jeg ikke få til at virke...
den skriver:
implicit declaration of function 'int getchar(...)'

er det der du skriver C++ eller C ?
Avatar billede arne_v Ekspert
29. januar 2003 - 14:41 #3
Der er ikke nogen standard måde at gøre det på.

Hvis man arbejder med en af de gængse PC compilere, så har
de den getch som Søren refererer til (erklæret i conio.h).
Avatar billede soreno Praktikant
29. januar 2003 - 14:42 #4
Det er kompileret af en c++ compiler (g++ fra MinGW).

Hvilken compiler bruger du ?
(Måske du ikke har conio.h ? - den er ikke en del af ansi-c..)
Avatar billede zapzie Nybegynder
29. januar 2003 - 14:44 #5
jeg bruger Dev-C++
Avatar billede soreno Praktikant
29. januar 2003 - 14:46 #6
Så bruger vi samme compiler - derfor burde det virke. Prøv lige at poste din kode.
Avatar billede zapzie Nybegynder
29. januar 2003 - 14:48 #7
jeg har prøvet bare at kopiere det du har skrevet...
Avatar billede soreno Praktikant
29. januar 2003 - 20:48 #8
Så prøv at oprette et nyt c++ projekt og paste koden ind. Det burde virke.
Avatar billede zapzie Nybegynder
29. januar 2003 - 21:20 #9
virker ikke :(
Avatar billede arne_v Ekspert
29. januar 2003 - 21:47 #10
Hm.

Det virker fint på min dev-cpp 4.9.6 med gcc 3.x !
Avatar billede soreno Praktikant
29. januar 2003 - 21:59 #11
Min er gcc 2.95.3-6 så mon ikke også det virker med alle versioner mellem dem..
Avatar billede segmose Nybegynder
30. januar 2003 - 09:09 #12
Prøv at tilføje

#include <stdio.h>

til de andre include.
Avatar billede zapzie Nybegynder
30. januar 2003 - 15:42 #13
Ja nu kan jeg compile det, men man skal stadig trykke "enter"
Avatar billede soreno Praktikant
30. januar 2003 - 15:49 #14
29/01-2003 14:34:29 skriver du bl.a. "..int getchar(...)"
Bruger du ikke getch() ?
Avatar billede arne_v Ekspert
30. januar 2003 - 15:55 #15
Megt godt spørgsmål !

getchar ligger i stdio.h og kræver retur !
Avatar billede segmose Nybegynder
30. januar 2003 - 17:15 #16
Ikke så vidt jeg kan læse i K&R2 eller i Borland 4.02

Fra BCC 4.02:
Syntax

#include <conio.h>
int getch(void);

Description

Gets character from keyboard, does not echo to screen.
getch reads a single character directly from the keyboard, without echoing to the screen.

Note:    Do not use this function for Win32s or Win32 GUI applications.

Return Value

getch returns the character read from the keyboard.
Avatar billede soreno Praktikant
30. januar 2003 - 17:25 #17
Kan vi blive enige om at
getch()
og
getchar()

ikke er det samme ?
Avatar billede arne_v Ekspert
30. januar 2003 - 17:45 #18
segmose> C compilere er lidt picky bl.a. mener de ikke
at funktioner der hedder getchar og getch er den samme
funktion !

:-)
Avatar billede zapzie Nybegynder
31. januar 2003 - 00:21 #19
Er det muligt at få den til det?
Avatar billede segmose Nybegynder
31. januar 2003 - 13:38 #20
Prøv at åbne din conio.h i din editor og find gå getch se om
den står i en linie der starter med #define som fx.

#define getch() getchar()
Avatar billede soreno Praktikant
31. januar 2003 - 13:43 #21
Det gør der ikke i min.
Avatar billede arne_v Ekspert
31. januar 2003 - 15:04 #22
Hvis din conio.h indeholder:

#define getch() getchar()

så bør du seriøst overveje at skifte compiler !
Avatar billede soreno Praktikant
31. januar 2003 - 17:53 #23
segmose >> Må vi lige høre hvad det er for en compiler du bruger ?
Avatar billede segmose Nybegynder
02. februar 2003 - 22:37 #24
Nej, jeg har det ikke stående hos mig, men det kunne være i dev-c da ovenstående
tyder på det, hvorfor skulle den ellers begynde at klage over udefineret getchar
når der kun bruges getch?
Avatar billede arne_v Ekspert
02. februar 2003 - 22:52 #25
Fordi vi tror at der muligvis står getchar og ikke getch i C++ koden !

Det passer med de 2 kendsgerninger:
1) stdio skulle includes
2) nu compiler det men kræver retur
Avatar billede segmose Nybegynder
03. februar 2003 - 09:55 #26
Jeg troede helt bestemt at zapsie havde tastet soreno's program stump ind og ikke skrevet noget forkert i sin kode, zapsie kunne du ikke
poste den kode du ikke kan få til at virke igen?
Avatar billede arne_v Ekspert
03. februar 2003 - 10:19 #27
Man kan jo læse forkert. Se f.eks.:

arne_v: getchar ligger i stdio.h og kræver retur !
segmose: Ikke så vidt jeg kan læse i K&R2 eller i Borland 4.02 [efterfulgt af citat om getch !]
Avatar billede segmose Nybegynder
03. februar 2003 - 11:10 #28
se zipsie 1. komentar:
implicit declaration of function 'int getchar(...)'
og 3.
jeg har prøvet bare at kopiere det du har skrevet...

heraf zipsie har ikke skrevet getchar men getch og den vil alligevel
tale om getchar.

Vi taler sikkert bare forbi hinanden og mener det samme.
Avatar billede zapzie Nybegynder
04. februar 2003 - 17:10 #29
nu er jeg total lost!

Hvis jeg kopierer følgende ind:

#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char **argv)
{
    cout << "Indtast et bogstav: ";
    char in = getch();
    cout << endl << "Du skrev: " << in << endl;
    return 0;
}

får jeg en compiler fejl: implicit declaration of function 'int getchar(...)
Hvis jeg tilføjer "#include <stdio.h>", så kan jeg compile det, men den kræver retur.
Avatar billede mcgoat Nybegynder
06. februar 2003 - 11:33 #30
getch() venter bare på du trykker på en vilkårlig tast og går så videre, getchar() venter på at du trykker på enter.. så dette vil virke:
#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char **argv)
{
    cout << "Indtast et bogstav: ";
    char in = getch();
    cout << endl << "Du skrev: " << in << endl;
    return 0;
}
Avatar billede mcgoat Nybegynder
25. marts 2003 - 12:50 #31
Hallo!!
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