wo ist der fehler??
-
Hallo,
ich lerne gerade c++ und habe mir folgendes Programm geschrieben:#include <iostream>
#include <cstdio>
using namespace std;int main()
{
char var_1[1000];
char var_2[1000000];
char wahl;
FILE *datei;cout<< "***Norman's Programm***\n\n";
cout<<"\nBitte waehlen Sie: <d> Loescht alle Eintraege\n"
<<" <n> Neuen Eintrag erstellen\n"
<<" <v> Eintraege ansehen\n";cin>>wahl;
switch (wahl)
{
case 'n':
cout<< "Bitte neue Nachricht eingeben: \n\n";
cin.getline(var_1, 1000, '\n\n');
cout<<var_1<<"\n\n";datei = fopen("C:\\cpp\\eingabe.txt", "a");
fprintf(datei,var_1);
fclose(datei);
break;case 'd':
datei = fopen("C:\\cpp\\eingabe.txt", "w");
fprintf(datei,"");
fclose(datei);
break;case 'v':
datei = fopen("C:\\cpp\\eingabe.txt", "r");
fscanf(datei,var_2);
fclose(datei);
cout<<"\n"<<var_2;
break;default : cout<<"Na dann eben nicht";
}system("PAUSE");
return 0;
}Beim Compilieren gibt mir der Compiler keinen Fehler aus aber wenn ich das Programm starte und einen der 3 Buchstaben (n,v,d) eingebe (und dann bestätige)
springt das Programm sofort zu system("PAUSE"); und das wars. Ich habe weder die Möglichkeiteine neue Nachrichten zu schreiben noch alte Nachrichten zu lesen.
Ich habe keine Gelegenheit (bei n)eine Eingabe als neue Nachricht zu tätigen oder (bei v) kann ich keine Nachrichten angezeigt bekommen obwohl welche in der Datei vrhanden sind.
Weiß jemand von euch was ich fasch mache? Vielen dank schonmal noha_391
-
Wahrscheinlich ist der Eingabepuffer von cin noch nicht leer. Das hat dann zur Folge, dass getline meint, die Eingabe sei beendet und Du landest am Ende des Programms.
Wie Du diesen Puffer leeren kannst, erfährst Du z.B. hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
-
Vielen Dank erstmal für den Tipp aber:
beim compilieren mit dem Tipp von der Seite wird mir folgende Fehlermeldung ausgegeben(Wenn ich an anderen Stellen einsetze mit anderen Zeilennummern):23:37 C:\Cpp\test.cpp [Warning] multi-character character constant
C:\Cpp\test.cpp In functionint main()': 33 C:\\Cpp\\test.cpp expected primary-expression before "void" 33 C:\\Cpp\\test.cpp expected;' before "void"(jetzt bin ich immer noch nicht weiter)
ich hoffe auf weitere Hilfe...
danke noha_391
-
siehst du denn das "Na dann eben nicht"?
-
Das bezieht sich (glaub ich) auf dein
char var_1[1000];Du solltest besser normale strings verwenden, also:
string var_1; string var_2;und weiter unten dann zum Einlesen einer Zeile verwendest Du dann zum Beispiel:
getline(cin, var_1);
-
An welcher stelle soll ich denn getline... schreiben an stelle von fprintf oder von cin... ich habe schon versucht es einzusetzen aber bekomme dann eine Fehlermeldung beim compilieren.
und an net: Nein das erscheint nicht.
-
Anstelle der cin.getline()-Befehle.
(Achja, die Warnung in Zeile 23 kommt daher, daß eine Zeichenkonstante '\n\n' nicht existiert (du kannst du ein einzelnes Zeichen als Endemarke angeben). Woher der Fehler mit dem void kommt, ist mir auch schleierhaft).
-
jetzt kriege ich eine Fehlermeldung für fprintf unf fscanf
-
Dann nimm doch stattdessen fstreams-Ein/Ausgabe (oder, wenn es unbedingt sein muß, "fprintf(datei,var_1.c_str());"