Programm (0 Fehler beim Comp.) stürzt ab
-
Hallöche miteinander,
habe folgendes Problem:
Beim Compilieren erhalte ich 0 Fehler und 0 Warnungen, soweit schonmal garnicht
schlecht... führe ich aber das Programm aus, so stürzt es nach eingabe von
name und vorname ab... es sollte aber eigentlich der aufruf zur eingabe des dateinames erfolgen...Zum Programm:
es wurde aus 2 einzelnen programmen (die alleine sehr gut laufen) zusammengesetzt.
Prg1: Es werden Personendaten eingegeben und im Speicher abgelegt
(Vorerst zum Testen im gesamt-Programm, nur Name+Vorname)
Prg2: Es wird in eine Datei (programm.lst) der Ausdruck "Test-String" geschrieben.Zur Fehlermeldung des Debugger:
Titelleiste:
Microsoft Visual C++ Debug LibraryInhalt:
Debug Assertion Failed!Program: C:\SOURCES\DEBUG\WRITE.EXE
File: fopen.c
Line: 54Expression: *file !=_T('\0')
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.(Press Retry to debug the application)
Schaltflächen:
Beenden, Wiederholen, IgnorierenHabe nirgendwo etwas gefunden, vielleicht könnt ihr mir helfen !!!
DAnke, hier der Code//Schreiben in eine Datei //#define _WIN32_WINNT 0x0500 #include <string> // Einbinden von string #include <windows.h> #include <fstream> #include <iostream> #include <iomanip> using namespace std; class Person // Klasse f. Personendaten { private: // private Bereich string name; // Variablendeklaration name als namespace string vorn; // Variablendeklaration vorn als namespace public: // public Bereich const string& leseName() const // string& = Referenz auf konst. string { // hintergest. const= Fkt darf nix ändern return name; // Rückgeben von name } const string& leseVorn() const // string& = Referenz auf konst. string { // hintergest. const= Fkt darf nix ändern return vorn; // Rückgeben von vorn } void speicherName(string); void speicherVorn(string); void speicherFam(string); }; // Funktionen zum speichern der Daten void Person::speicherName(std::string name_)// Funktion zum Speichern von name { name = name_; // private name = übergeb. Var. name_ } void Person::speicherVorn(std::string vorn_)// Funktion zum Speichern von vorn { vorn = vorn_; // private name = übergeb. Var. vorn_ } ///////////// Funktion für Vollbildschirm-Modus //////////////////////// void FullScreen() { keybd_event(VK_MENU, 0x38, 0, 0); keybd_event(VK_RETURN, 0x1c, 0, 0); keybd_event(VK_RETURN, 0x1c, KEYEVENTF_KEYUP, 0); keybd_event(VK_MENU, 0x38, KEYEVENTF_KEYUP, 0); } int main() { FullScreen(); int i=1; string name; // Variable name als namespace string string vorn; // Variable vorn als namespace string char datei[250]; cout << "Name: "; // Ausgabe der Eingabeaufforderung cin >> name; // Einlesen der Variablen name cout << "Vorname: "; // Ausgabe der Eingabeaufforderung cin >> vorn; // Einlesen der Variablen vorn Person obj1; // obj1 als Objekt der Klasse Person erz. obj1.speicherName(name); // obj1 ruft Speicher Fkt. für name auf obj1.speicherVorn(vorn); // obj1 ruft Speicher Fkt. für vorn auf system("cls"); cout << "Zu Ihrer Person\n\n"; cout << "Name: \t\t"; cout << obj1.leseName() << "\n"; // Aufruf v. Fkt. leseName -> Ausgabe cout << "Vorname: \t"; cout << obj1.leseVorn() << "\n\n"; // Aufruf v. Fkt. leseVorn -> Ausgabe ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// streampos ausgabepos1,anfangpos,endepos; cout << "Dateiname: "; cin.get(datei,50); ifstream eingabe(datei,ios_base::in); // Datei in die geschrieben wird if (eingabe.good()) { ofstream ausgabe("programm.lst",ios_base::out | ios_base::in | ios_base::ate); if (ausgabe.good()) { eingabe.seekg(0L,ios::beg); ausgabe << "Test-String"; } else cout << "Ausgabedateifehler!" << endl; } else cout << "Eingabedateifehler oder Datei nicht gefunden!" << endl; return 0; }
-
// cin.get(datei,50);
cin>>datei;bei cin.get nimmt er die restzeichen aus dem speicher und überspringt die eingabe der datei.
entweder den buffer löschen, oder cin nehmen.
-
Jo das war der Fehler,
Besten Dank elise, man und danach habe ich solange gesucht....