[C#]Problem mit getch() Einlesen von Zeichen

SaimonW

Grünschnabel

Servus @all,

bin ein absoluter Neuling was C#-Programmierung bzw programmieren generell angeht.
Haben in der Schule eine Aufgabe bekommen wo wir Zeichen einlesen müssen. Leider klappt dies nicht so wie ich mir das vorstelle...
Code:
#include<stdio.h>
#include<conio.h>


void main (void)
{
int zahl;
const int max=255,min=1;
char taste;

printf ( "Bitte geben sie eine Zahl im Wertebereich zwischen %d und %d ein: \n\n", min,max) ;
scanf ("%d", &zahl) ;
printf ("Sie haben eingegeben: %d\n\n", zahl) ;
if ((zahl<0)||(zahl>255))
{
printf ("Die Zahl liegt ausserhalb des Wertebereiches!");
}
if (zahl==0)
{
}
printf ("Sie koennen nun zwischen 3 Anzeigearten waehlen\n");
printf ("(0)   - Oktal Anzeige des Wertes");
printf ("(H)   - Hexadezimal Anzeige des Wertes\n");
printf ("(A)   - Anzeige des Wertes als ASCII Zeichen\n");

taste=getche();

switch (zahl)
{
case  '0' :
printf ("Sie haben die Oktalanzeige gewaehlt!");
break ;
case  'H' :
printf ("Sie haben Hexadezimal-Anzeige gewaehlt!");
break;
case  'A' :
printf ("Sie haben die ASCII Anzeige gewaehlt!");
break;
getch();
}

Ich bekomme dann immer 2 Fehlermeldungen:
[C++ Warnung] Unit1.cpp(35): W8066 Code wird nie erreicht
[C++ Warnung] Unit1.cpp(37): W8004 'taste' wurde ein Wert zugewiesen, der nie verwendet wird

Habe mal die Schlüsselwörter um die es geht FETT markiert.
Hoffe ich habe alle nötigen Angaben gemacht.
Würde mich sehr freuen wenn mir da jmd helfen könnte bin schon ne ganze weilen am testen aber bekomme es nicht hin...

Mein Betriebssystem ist Windows XP Pro SP2
Borland C++ Builder 6
Konsole mit Multi-Threads

Danke schonma

Greetz S@imon
 
Zuletzt bearbeitet:
Code:
switch (zahl)
{
case  '0' :
printf ("Sie haben die Oktalanzeige gewaehlt!");
break ;
case  'H' :
printf ("Sie haben Hexadezimal-Anzeige gewaehlt!");
break;
case  'A' :
printf ("Sie haben die ASCII Anzeige gewaehlt!");
break;
getch();
}

Du weist der Variable eine zahl zu und willst dann Buchstaben darin finden? Nur ein Tipp Zahlen werden in den case-Zweigen OHNE ' '-die Zeichen angegeben.


[C++ Warnung] Unit1.cpp(37): W8004 'taste' wurde ein Wert zugewiesen, der nie verwendet wird
Hier steht nur das du der Variable "taste" einen Wert zuweist (fett-Marktiert Anweisung), die Variable aber garnicht gebrauchst! Wozu weist du dann der Variable einen Wert zu wenn du den Wert nirgendwo gebrauchst?

Sonst sag uns doch was du machen musst und wie du dir vorstellst das es funktionieren soll!

Gruß
Rudolf
 
Der Sinn des Programms soll sein dass der Benutzer eine Zahl eingibt und danach auswählen kann in welche der 3 Darstellungsweisen er es ausgeben möchte. Aber ich schaffe es nicht dass die Buchstaben eingelesen werden...
Wie wäre es denn wenn ich anstatt Buchstaben Zahlen nehmen würde?
 
Hallo,

was mir so spontan einfällt:

int zahl;
belege die zahl doch gleich hier mit z.b. 0
int iZahl = 0; (Konventionen ?)

const int max=255,min=1;
char taste;

dann Schleife while( iZahl<min || iZahl > max ) {
printf ( "Bitte geben sie eine Zahl im Wertebereich zwischen %d und %d ein: \n\n", min,max) ;
scanf ("%d", &zahl) ;
printf ("Sie haben die Zahl: %d\t eingegeben.", zahl) ;
if ((zahl<0)||(zahl>255))
{
printf ("Die Zahl liegt ausserhalb des Wertebereiches!");
}

}

printf ("Sie koennen nun zwischen 3 Anzeigearten waehlen\n");
printf ("\"0\" - Oktal Anzeige des Wertes");
printf ("\"H\" - Hexadezimal Anzeige des Wertes\n");
printf ("\"A\" - Anzeige des Wertes als ASCII Zeichen\n");

taste=getche(); //falsch, weil getche int oder wint_t als Datentyp zurückliefert - siehe
http://msdn2.microsoft.com/en-us/library/kswce429(VS.80).aspx

also machst du z.B.
switch (int iKey = _getch) //getch -> gibt immer die Warnung deprecated
{
case '0' : // falsch, nicht in Anführungszeichen, weil der Typ ja int ist
default:
printf ("aktuelle Eingabe: %d\t ", iKey) ; //damit kannst du die Codes der gewünschten Tasten sehen, oder du kuckst halt in ner Tabelle nach was A in int ist (müsste 65 sein)

Damit kannst du die dir auch schnell ausspucken lassen:
#include <conio.h>
#include <iostream>
using namespace std;

void printcharacter() {
int ch;
while((ch = _getch()) != 13) //Solange Enter nicht gedrückt
{
cout << ch << endl; //Ausgabe der gedrückten Taste (auch wenn 2 Codes wegen der Schleife)
}
}
void main() {

printcharacter();
};
}

Das war nur schnell aus dem Kopf, ohne kompilieren, aber es sollte dich in die richtige Richtung bringen.
 
Zurück