Fehler bei Buchstabeneingabe in C++

Diskutiere Fehler bei Buchstabeneingabe in C++ im Programmierung Forum im Bereich Software Forum; 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...
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #2
M

ModellbahnerTT

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

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


ModellbahnerTT
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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.
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #4
S

schally

Dabei seit
05.02.2006
Beiträge
1.326
Alter
35
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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #6
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
50
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:
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #8
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
50
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....
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #9
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
43
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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #11
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
43
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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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
 
  • Fehler bei Buchstabeneingabe in C++ Beitrag #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

WMI Access Denied Fehler beim Zugriff auf den Unified Write Filter (UWF): Hallo, Ich bin gerade dabei eine C++ Anwendung zu schreiben, welche den in Windows 10 IoT integrierten Schreibfilter UWF über WMI verwendet...
Der VSS Doctor findet bei mir Fehler...: Hallo Allerseits! Der VSS Doctor findet bei meinem Win 10 Fehler, laut nachfolgender Fehlerliste! Drum funktioniert Acronis Backup 2018 mit der...
Windows Store Broken: If you search for Windows Store broken you find A LOT of Questions and (useless) answers, so no answer helped I am looking for support here...
ms-windows-store purgecaches Fehler seit heutigem Update auf Windows 10, Version 1803: Hallo! Habe seit gerade eben das Problem, dass ich den Microsoft Store nicht öffnen kann. Dieses Problem trat nach dem heutigen Update auf. Das...
WLAN Probleme Standardgateway und DNS Server: Hallo zusammen, langsam verzweifel ich - meine WLAN Verbindung von meinem Desktop PC funktioniert nicht richtig. Seiten bauen sich nur mit...
Oben