Fehler bei Buchstabeneingabe in C++

Diskutiere Fehler bei Buchstabeneingabe in C++ im Programmierung Forum im Bereich Programmierung; So hi leute, bin neu hier im Forum. Ich habe über 7 Stunden in Google gesucht, leider ohne erfolg. Folgendes Problem, ich möchte ein Programm in...
#1
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
So hi leute, bin neu hier im Forum.

Ich habe über 7 Stunden in Google gesucht, leider ohne erfolg.

Folgendes Problem, ich möchte ein Programm in C++ Schreiben, dabei sind einige Zeilen für Anwendungen, jede Zeile hat eine id z.B. 1 schreiben, 2 löschen usw...
Dann kommt die meldung bitte eine ID Nummer eingeben, ok kein Problem, habe als Dateityp int genommen, ist aber leider nur für zahlen.
Dann habe ich einen if befehl eingebaut, auch ok .... if (ID < 1 || ID > 19) cout fehler (in kurzform ^^). Kein Problem, aber .... wenn ich nun einen Buchstaben reinhaute. BOOOOOOOMS, entlosschleife (es wird immer und immer wieder die fehler nachricht angezeigt) kein wunder der datentyp ist ja auf int, nur, wie mach ich dass das ich buchstaben und zahlen eintippen kann damit die fehlermeldung auftritt ohne entlosschleife? Bekomm es einfach nicht auf die reihe auch mit char nicht.
Ich möchte das der Befehl so aus sieht.

If (ID < 1 || ID > 19 || ein buchstabe von a -z eingegeben wird)
cout >> "fehler......"

Währe echt super wenn mir jemand dabei helfen könnte, in ganz google gab es keine antwort, ausser din tutorials.de aber die seite scheint down zu sein :wut :flenn

MfG
 
#2
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
39
nimm als eingabetyp char und convertiere diesen dann zu einem int. z.B.

Code:
char eingabe;
int ausgabe;
cin << eingabe;
ausgabe = (int) eingabe;

ModellbahnerTT
 
#3
A

AlienJoker

Gast
Also generell würde ich die abfrage schonmal nicht mit if (sondern case) machen und wenn doch, brauchst du ein else am Ende, also so:

If 1, dann starte schreiben
If 2, dann starte löschen
else geh wieder zur eingabe und sag: das war nix.

Deine If-abfrage kann das einfach nicht ab, wenn sie n char bekommt, ist ja auch klar, also musst du das abfangen wie beschrieben.
 
#4
S

schally

Dabei seit
05.02.2006
Beiträge
1.313
Alter
31
Ort
RLP
Also generell würde ich die abfrage schonmal nicht mit if (sondern case) machen und wenn doch, brauchst du ein else am Ende, also so:

If 1, dann starte schreiben
If 2, dann starte löschen
else geh wieder zur eingabe und sag: das war nix.

Deine If-abfrage kann das einfach nicht ab, wenn sie n char bekommt, ist ja auch klar, also musst du das abfangen wie beschrieben.
hi,
aber mit switch - case kann er ja nichts vergleichen !
Am besten wäre du stellst mal deinen Code online, dann kann jeder sich mal an deinem Code auslassen ;-) , nee mal ernsthaft stell ihn mal online!

evtl wäre es auch sinnvoll auf die ascii zeichen zuprüfen
http://de.wikipedia.org/wiki/ASCII-Tabelle


mfg
schally
 
#5
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Code:

char eingabe;
int ausgabe;
cin << eingabe;
ausgabe = (int) eingabe;
Hi, danke für eure schnelle antwort.

Hab das so gemacht wie oben zitiert, tja, das mit dem char hab ich schon mal gemacht, hab es so eingegeben:
Code:
char ID;
int  intID;

cout << "ID: ";			
cin >> ID;
intID = (int) ID;
das problem in dem fall ist das er jetzt nichtmal mehr die zahlen erlaubt die erlaubt sein müssten (1-20), also was ich damit meine ist das er jetzt die zahlen auch als fehler erkennt.

Code:
if (ID < 1 || ID > 20)
{
SetConsoleTextAttribute(hStdout,FOREGROUND_RED);
cout<< "\n\aDie eingegebene ID Nummer ist ung\201ltig, bitte Versuchen Sie es erneut\n\n";
Was kann ich jetzt machen?
Und wenn wir schon dabei sind... wie kann ich eine bestehende txt datei erweitern? heist, ich habe z.B. x.txt, in der ersten Zeile steht, toller tat...ich möchte jetzt in die x.txt in die nächste zeile den satz. heute ist ein schöner tag... eintragen. Wie mach ich das? denn die lösung die ich verwende überschreibt die bestehende datei.

Code:
{
fstream MytestEditor;
MytestEditor.open("MytestEditor.sql", ios::out);
MytestEditor << "Schöner Tag "<<Dataname<<";" << endl;
MytestEditor.close();
}
Dataname ist deklariert. (also eine cin eingabe).
Danke schonmal...

MfG
 
#6
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
46
Ort
Dorsten
char ID;
int intID;

cout << "ID: ";
cin >> ID;
intID = (int) ID;
.
.
if (ID < 1 || ID > 20)
Liegt im farblich - Fettmarkierten evtl Dein Fehler??
Du konvertierst zwar den Eingabetyp von char in int, arbeitest aber mit char weiter:


so müsste es gehen:
if (intID < 1 || intID > 20)
 
Zuletzt bearbeitet:
#7
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, danke für deine antwort, hab echt gedacht das es das sein könnte, aber leider doch nicht :flenn
Sonst noch vorschläge?

MfG
 
#8
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
46
Ort
Dorsten
Bin selbst Neuling in c++,
aber mir fällt auf das Dir folgendes vorgeschlagen wurde:

cin << eingabe;

Du aber :

cin >> ID;

geschrieben hast.
Ich weiß nicht ob es was mit Deinem Fehler zu tun hat....
 
#9
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
39
IntiD muss zwischen 48 und 57 ligen und wenn das der Fall ist dann prüfst ob id grösser 1 oder kleiner 20 ist. Wobei es sein kann das er dir zweistelligen Zahlen nicht nimmt weil char ist nur ein Zeichen.

ModellbahnerTT
 
#10
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, genau MvSt1234,
sagmal ModelbauerTT, ist das extra das du die Pfeile falschrum geschrieben hast?

Den es heist ja:

cout << "hi";
cin >> X;

Und was meinst du zwischen 48 und 57?
Ausserdem will ich die die zahlen die kleiner als 1 und grösser als 20 sind verbieten.
Auf jeden fall erkennt er die zahlen die eigendlich erlaubt sein sollten als falsch, auch die 1 - 20. Also einfach alles, Buchstaben und zahlen.

Kann mir jemand auch die frage beantworten mit der Txt datei?
Frage steht in meiner ersten Antwort.

MfG
 
#11
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
39
nein das ist ein versehen da ich für diese Sachen im Normalfall printf und scanf verwende.
Kann mir jemand auch die frage beantworten mit der Txt datei?
Du musst die Datei mit dem Append Attribut öffnen. So da wird dann das was neu in die DAtei kommt hinten dran gehangen.


ModellbahnerTT
 
#12
D

ds1984

Dabei seit
18.06.2006
Beiträge
149
Hallo,

ist zwar schon ein Weilchen her dass ich C++ programmiert habe, aber warum nimmst du nicht einfach ein "cin.fail()" um falsche Eingaben abzufangen? Damit ersparst du dir auch die unnötigen (nicht C++ konformen) Typecasts, die hier vorgeschlagen wurden.
Hier hab ich auch noch nen Link der eigentlich genau auf dein Problem zutrifft:
http://www.tutorials.de/forum/c-c/256971-pruefen-ob-eingabe-int-ist.html
 
#13
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Danke für eure antworten, leider hat der link mir nicht weitergeholfen, das Programm spinnt genauso, es macht dann eine endlosschleiffe mit der fehlermeldung das die eingabe nicht erlaubt sei.

wegen dem Append Attribut, kannste mir erklären wie genau?
Hab in Google mal geschaut, aber keine antwort gefunden.

Danke

MfG
 
#15
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, sorry das ich erst jetzt antworte, hatte bis jetzt keine zeit es zu testen, sagmal, kann es sein das den Link den du mir geschickt hast nur für C ist?
Naja egal, habe im Internet ein wenig gesucht und dies gefunden http://www.cpp-entwicklung.de/cpplinux/cpp_main/node5.html
Dort hab ich es gefunden, so, danke trotzdem.
Mein erstes Problem besteht aber weiterhin.:flenn

MfG
 
#16
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, muss schon sagen, bin zimmlich enttäuscht, ich dachte ich sei hier in einem Programmier Forum, und trotzdem konnte mir keiner richtig helfen :thumbdown
Egal hab dank eines Freundes eine lösung gefunden, ich sag nur eines: Puffer löschen
Wer jetzt behauptet, achja klar darauf wäre ich auch gekommen.... Vergiss es!!!
Danke an alle die mir gepostet haben und mir helfen wollten.:up

MfG
 
Thema:

Fehler bei Buchstabeneingabe in C++

Fehler bei Buchstabeneingabe in C++ - Ähnliche Themen

  • Bluescreens und Fehler nach Clean Install Win 10 Version 1809

    Bluescreens und Fehler nach Clean Install Win 10 Version 1809: Hallo zusammen, langsam verzweifle ich an meinem Windows. Ich habe am letzten Montag einen Clean Install mit dem Media Creation Tool auf die...
  • Kummulative Windows-Update Win 10 laufen ständig in Fehler

    Kummulative Windows-Update Win 10 laufen ständig in Fehler: Kumulative Windows 10 Updates laufen ständig in Fehler - nun seit mehr als einem Jahr. Wann kann MS Windows 10 wieder fehlerfrei Patchen. Der...
  • Windows-Sanfbox Fehler 0x80070015

    Windows-Sanfbox Fehler 0x80070015: Sehr geehrte Damen und Herren, nachdem ich das Mai-Update 2019 installiert habe, dachte ich eigentlich, dass ich die Windows-Sandbox nutzen...
  • Fehler Windows 10 64 Bit Explorer.

    Fehler Windows 10 64 Bit Explorer.: Hallo zusammen, Ich war die Tage bei einem Freund am PC. Ich konnte keine neuen Ordner mit Windows Mitteln erstellen. Rechte Maustaste auf dem...
  • Bekannte Fehler im Mai 2019 Update Windows 10 1903 und passende Workarounds von Microsoft

    Bekannte Fehler im Mai 2019 Update Windows 10 1903 und passende Workarounds von Microsoft: Auch wenn das Windows 10 1903 Update schon sehr gut läuft und auch von vielen Usern bereits installiert wird gibt es natürlich noch den einen oder...
  • Ähnliche Themen

    Oben