Datei-Inhalt löschen



  • gibt es eine Funktion/Routine, einen Dateiinhalt zu löschen, bevor hineingeschrieben wird ??



  • ofstream out("datei.txt");//statt ("datei.txt",ios::app)
    


  • Nee klappt nicht,
    der fügt dann immer ein undefiniertes Zeichen vor der Zahl hinzu....
    der müsste einmal alles löschen,was in der datei steht....



  • hier sowas z.B. schreibt er dann darein

    vorher stand nur die 0 in der Datei

    und hinterher das

    1
    

    😕 😕 😕 😕



  • Auf einer Seite über C-Dateizugriffsbefehlen fand ich folgendes

    FILE *f;
    
        f = fopen("test.dat", "rwb");
    
    wobei
    
    Der erste Parameter von fopen() ist der Dateiname. Der zweite Parameter ist der Öffnungsmodus, der als Zeichenkette eines oder mehrerer Buchstaben übergeben wird. Tabelle (tabfilemodus) zeigt eine Übersicht. [Öffnungsmodi bei fopen()] Zeichen  Bedeutung  
    r  Zum Lesen öffnen  
    w  Datei leeren und zum Schreiben öffnen  
    a  Daten werden angehängt  
    r+  Neben dem Lesen auch das Schreiben zulassen  
    w+  Datei leeren und zum Schreiben und Lesen öffnen 
    b  Binärdatei (keine Konvertierung der Zeilenendezeichen)
    

    bekomme das aber nicht gescheit eingebaut...

    habe es so implementiert

    streampos ausgabepos1,anfangpos,endepos;
    
    	ifstream  eingabe2(numm.c_str(),ios_base::in);		// Datei in die geschrieben wird
    
    	if (eingabe2.good())
    	{
    			ofstream ausgabe(numm.c_str(), ios_base::out | ios_base::in | ios_base::ate);
    
    			if (ausgabe.good())
    			{
    				//fstream f(numm.c_str(), ios::in);
    				//f.clear();
    				FILE *f;
    
    				f = fopen(numm.c_str(), "w");
    
    				eingabe2.seekg(0L,ios::beg);
    
    				ofstream out(numm.c_str());				//statt (numm.c_str(), ios::app)
    				//ofstream out(numm.c_str(), ios::app);
    
    				ausgabe << zahl_var;
    				cout << "\n\nSchreiben in Datei erfolgreich!\n\n";
    
    			}
    
    			else
    				cout << "Ausgabedateifehler!" << endl;
    	}
    
    	else
    		cout << "Eingabedateifehler oder Datei nicht gefunden!" << endl;
    

    macht er aber trotzdem noch so falsch



  • Jetzt hab ich es 🙂
    Hab's alleine rausgefunden *STOLZ* 🙂

    so hab ich es gemacht :

    FILE *ads;
    	ads = fopen(numm.c_str(), "w");
    	fclose(ads);
    
    /////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////
    
    	streampos ausgabepos1,anfangpos,endepos;
    
    	ifstream  eingabe2(numm.c_str(),ios_base::in);		// Datei in die geschrieben wird
    
    	if (eingabe2.good())
    	{
    			ofstream ausgabe(numm.c_str(), ios_base::out | ios_base::in | ios_base::ate);
    
    			if (ausgabe.good())
    			{
    				fstream f(numm.c_str(), ios::in);
    				f.clear();
    
    				eingabe2.seekg(0L,ios::beg);
    
    				//ofstream out(numm.c_str());				//statt (numm.c_str(), ios::app)
    
    				ausgabe << zahl_var;
    				cout << "\n\nSchreiben in Datei erfolgreich!\n\n";
    
    			}
    
    			else
    				cout << "Ausgabedateifehler!" << endl;
    	}
    
    	else
    		cout << "Eingabedateifehler oder Datei nicht gefunden!" << endl;
    

    Das ist natürlich nur ein kleiner Auszug aus dem ganzen code.... 🙂



  • Wieso erstellst du zu deiner Frage noch einen extra-Thread obwohl du sie bereits gestellt hast?

    Siehe auch: http://www.c-plusplus.net/forum/viewtopic-var-t-is-107878-and-sid-is-4f0ab2e99917b149e0e89016ab0e425f.html

    Desweiteren würde ich nicht unbedingt C und C++ mischen. In deinem Crosspost habe ist eine C++-Anregung 🙂

    Caipi


Anmelden zum Antworten