PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: ein einziges verdammtes zeichen einlesen...


Gast
2004-10-23, 20:39:16
Hi,

irgendwie hab ich es geschafft mich 4 jahre lang nicht mit c zu beschäftigen. nun ist doch soweit. und ich komm mal gaaaaaar nicht damit klar.

ich möchte in einer schleife 10 mal hintereinander ein einziges zeichen einlesen. dazu nutze ich getchar(); leider muss ich die eingabe mit enter abschliessen was zur folge hat, dass in dem moment 2 zeichen eingelesen werden. ich lese also 5 mal 2 zeichen ein und nicht 10 mal eins. wohl wegen der pufferung welche erst mit dem enterzeichen geleert wird und den variablen zugewiesen werden.

wie kann ich also ganz einfach nur ein einziges zeichen von der tastatur abfragen, am besten eben ungepuffert ( druck der taste = zuweisung in variable )

ich surfe schon seit ner stunde rum und finde einfach nix. schon sehr depremierend... :(

Trap
2004-10-23, 20:46:03
Das ist OS-abhängig. Unter Windows macht getch() aus <conio.h> das was du willst.

Gast
2004-10-23, 20:57:22
sorry, haett ich dazu schreiben sollen. unter linux

ich peil das prinzip nicht so recht.

ich hab ne schleife mit 10 durchläufen und will jeweils 1 char einlesen. durch getchar() werden aber wie gesagt nur 5 durchläufe gemacht und nur jedes zweite char wird gefuellt.

Matrix316
2004-10-23, 21:07:45
Schreib doch mal die Schleife hin! :)

Gast
2004-10-23, 21:14:28
ein bisher sehr simples proggie, welches
#include <stdio.h>
#include <math.h>

ausgabe(char temp, int durchlauf){
printf("%d Gebe das Zeichen ein: %c\n",durchlauf,temp);
}

main()
{
char Ereignis[3] = {'a','b','c'};
char Eingabe[10];
int i=0;
int randomEreignis = 0;

printf("Reaktionstest\n");
for(i=1;i<11;i++){
ausgabe(Testereignis[i],i);
Eingabe[i]=getchar();
}

for(i=1;i<11;i++){
printf("%d Deine Eingaben sehen wie folgt aus: %c \n",i,Eingabe[i]);
}
printf("\n");

}

Gast
2004-10-23, 21:18:06
ein bisher sehr simples programm, welches einfach 10 vordefinierte ereginisse ausgibt und der user eben dieser ereignisse nacheinander ( buchstaben a,b,c ) eintippen muss.

Trap
2004-10-23, 21:33:50
getchar ließt auch den Zeilenumbruch durch Enter als eigenes Zeichen.

Wie man unter Linux ungepufferte Eingabe macht weiß ich leider nicht.

Matrix316
2004-10-23, 23:01:52
ein bisher sehr simples proggie, welches
#include <stdio.h>
#include <math.h>

ausgabe(char temp, int durchlauf){
printf("%d Gebe das Zeichen ein: %c\n",durchlauf,temp);
}

main()
{
char Ereignis[3] = {'a','b','c'};
char Eingabe[10];
int i=0;
int randomEreignis = 0;

printf("Reaktionstest\n");
for(i=1;i<11;i++){
ausgabe(Testereignis[i],i);
Eingabe[i]=getchar();
}

for(i=1;i<11;i++){
printf("%d Deine Eingaben sehen wie folgt aus: %c \n",i,Eingabe[i]);
}
printf("\n");

}


Was ist denn "Testergebnis[]"? Ergebnis geht ja nur bis 3... :confused: