Probleme mit char Array
-
Hallo,
habe mal wieder ein Problem mit meinem Programm in Visual C++. Die Lösung ist warscheinlich mal wieder das einfachste was mir nicht in den Sinn kommt, allerdings hab ich zur zeit irgendwie ein Hänger ^^, zumindest weiß ich nicht weiter.
Mein Problem ist folgendes:
ich habe ein char array in dass der Benutzer einen Text eingeben kann
cin.get (c_Story, 500);
und ein Befehl der die Länge des Textes liest und speichert
n_Länge =strlen(c_Story);
wenn ich dies durch eine Schleife aufrufen möchte:
for (int i = 0;i<n_Länge;i++) { cout << c_Story[i]; Sleep(200); }
Schneidet er den ersten Buchstaben ab -.-
also wenn ich "Hallo" eingebe, wird durch die Schleife "allo" ausgegeben
Hoffe ihr könnt mir helfen.mfg Sumpfarsch
-
Zeig doch mal den Code am Stück. Außerdem wäre es interessant zu wissen, ob dein get()-Aufruf das einzige ist, was Daten vom Benutzer einliest.
(PS: Und du brauchst den String nicht zeichenweise auszugeben - ein einfaches
cout<<c_Story;
hat den selben Effekt)
-
Dessen bin ich mir bewusst. Allerdings wie du gleich sehen wirst ist dies in meinem Programm notwendig, zumindest wüsste ich nicht wie ich es sonst machen sollte.
nun der Code:#include <iostream> #include <windows.h> #include <mmsystem.h> #include <string> #pragma comment( lib, "winmm.lib" ) using namespace std; int main () { char c_Story[501] ; int n_Länge; cout << "schreibe deine eigene Story (max 500): \n"; cin.ignore (); cin.get (c_Story, 500); n_Länge =strlen(c_Story); for (int i = 0;i<n_Länge;i++) { cout << c_Story[i]; Sleep(200); if (c_Story[i] == ' ') { sndPlaySound(TEXT("Space 2.wav"), SND_ASYNC); Sleep(150); } else if ((c_Story[i] == '.')||(c_Story[i] == '?')||(c_Story[i] == '!')) { sndPlaySound(TEXT("Enter.wav"), SND_ASYNC); cout << "\n"; Sleep(500); } else { sndPlaySound(TEXT("Key.wav"), SND_ASYNC); Sleep(50); } } system ("Pause"); return 0; }
wie du nun siehst, wird zu jedem zeichen ein Sound abgespielt so als würde jemand etwas in den Pc eingeben :D.#
Ich hoffe du verstehst nun was ich vorhabe. Vieleicht findest du ja einen Fehler.mfg Sumpfarsch
-
Nimm das cin.ignore() raus. Wieso hattest du es überhaupt drin?
-
1.Jetz funzts danke
2.Hab dacht des brauch ich bei einem cin.get Befehl ?.
-
Sumpfarsch schrieb:
2.Hab dacht des brauch ich bei einem cin.get Befehl ?
.
Was sagt denn die Doku, was ignore bewirkt?
-
Sumpfarsch schrieb:
1.Jetz funzts danke
2.Hab dacht des brauch ich bei einem cin.get Befehl ?.
Das ignore() benötigst du nicht vor dem get() bzw. getline(), sondern nach anderen Eingabe-Operationen (per Eingabe-Operator), um die zurückgebliebenen Zeilenwechsel aus dem Tastaturpuffer zu entsorgen.