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 Library

    Inhalt:
    Debug Assertion Failed!

    Program: C:\SOURCES\DEBUG\WRITE.EXE
    File: fopen.c
    Line: 54

    Expression: *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, Ignorieren

    Habe 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....


Anmelden zum Antworten