C Fehler beim Einlesen von Char

nato44

Lieutenant
Registriert
Mai 2008
Beiträge
848
Hallo, wir haben folgende Aufgabe bekommen:
In der Abbildung ist die Ausgabe eines Programmes angegeben, das für ein eingegebenes Zeichen den entsprechenden ASCII-Wert ermittelt und in dieser Programmversion als Dezimalzahl ausgibt. Das Programm soll eine kleine ASCII-Tabelle ausgeben, deren Bereich vom Benutzer vorgegeben wird, wobei Steuerzeichen u.ä. nicht berücksichtigt werden sollen.

Mein Problem ist nun, dass egal ob ich scanf, getchar oder getch benutze, nach der ersten Eingabe gibt er mir Müll aus (scanf) oder beendet das Programm irgendwie und lässt keine zweite Eingabe zu (getchar).
Wenn ich der Char c und d feste Werte zuweise, funktioniert das Programm ja, aber so nicht.
Außerdem muss ich sagen, dass ich mit dem Einlesen von Chars noch nicht viel Ahnung hab.
Vielleicht kann hier ja mal jemand drüberschauen und mir helfen? :)

Code:
#include <stdio.h>

int main(void){
char c;
char d;
int i, e=c, f=d;

printf("Welchen Bereich wollen Sie als ASCII-Zeichen ausgeben?");
printf("\nBitte geben Sie Zeichen 1 ein (Grenze1): ");
scanf("%c",&c);
printf("\nBitte geben Sie Zeichen 2 ein (Grenze2): ");
scanf("%c",&d);

for(i=e;i<=f;i++){

printf("\nZeichen                   Dezimalzahl        Hexadezimalzahl");
printf("\n___________________________________________________________");
printf(" \n%c                               %d                 %x\n\n", i, i, i);
}

return 0;
}

bzw.
bringt auch nicht viel:
Code:
int main(void){
char c;
char d;
int i, e=c, f=d;

printf("Welchen Bereich wollen Sie als ASCII-Zeichen ausgeben?");
printf("\nBitte geben Sie Zeichen 1 ein (Grenze1): ");
c=getchar();
printf("\nBitte geben Sie Zeichen 2 ein (Grenze2): ");
d=getchar();


Danke!
 
das ist char kein string. wenn du mehre zeichen haben wills musst du ein array erstellen
 
Hmm möchte ich ja nicht. Ich will einfach nur je ein Zeichen einlesen können und das dann weiterverwenden. Das Weiterverwenden funktioniert ja auch, wenn c und d feste Werte haben. Nur eben das Einlesen/Speichern von Eingaben in c und d irgendwie nicht.
 
int i, e=c, f=d;

das geht so nicht.

du möchtest e den wert von c geben obowhl c kein wert hat?!

Wenn du VS benutzt sollte er eig auch meckern
 
Oh stimmt, danke! Vorher nen Wert zuweisen, der noch gar nicht existiert ist schlecht :D
Ne ich benutze Codeblocks...

Funktionieren tut es jetzt, aber nur mit getch...Wenn ich jedoch getchar benutze und z.b. ab direkt hintereinander eingebe, funktioniert es. Aber warum macht er dann beide Charabfragen in eins nach dem 2. printf? Muss ich die Entereingabe der Tastatur abfangen?
 
Zuletzt bearbeitet:
Also ich hab es bei mir ausprobiert. und außerdem fehlt hier noch was
for(i=e;i<=f;i++){

i,e,f haben keine werte also funzt die schleife net. welche werte sollen die denn haben?

edit. gut den puffer könnte man auch mal leeren.
 
Die int e und f nehmen die Dezimalwerte von den Chars c bzw. d an.
Hab meinen Beitrag hier drüber nochmal editiert...

@Simpson474: Klasse, jetzt gehts ;) Wird dadurch der Tastaturpuffer geleert?
 
Zurück
Oben