Daten in Textdatei speichern! file pointer am anfang setzen.....



  • hallo! ich will einträge in eine textdatei speichern!
    mit f1=fopen(f1,"C:\\Guest.txt",at);
    ich will folgendes:
    Eintrag=Uwe

    textfile:
    Gerald
    Martin
    Christoph

    Ich will jetzt das der Eintrag=Uwe am Anfang der Textdatei gespeichert wird!
    ich habs mit fseek(f1, 0, SEEK_SET); probiert will den file pointer am beginn des streams setzen...das macht er aber nicht!! ich weiß nicht warum!!!
    hab ihr eine andere lösung???
    mfg surf.



  • versuchs mal so

    #include<stdio.h>    
    #include<conio.h>    
    #include<iostream.h> 
    #include<string.h> 
    #include<fstream.h>
    
    struct Adresse  
         {
          string Name;  
         };
    
    void main(void)
    {
     long int x,name;  
    
        cout<<"Achtung: Keine Leerzeichen eingeben sondern Bindestriche oder Underlines !"<<endl; 
        cout<<"Wieviele Namen moechten Sie eingeben: ";                                         
        cin>>name;  
    
        for(x=1;x<=name;x++)
          {
           Adresse l;  
           FILE *datei;
           datei = fopen("c:\\Guest.txt","a+");
           ofstream out("c:\\Guest.txt",ios::app);  
    
                     cout<<endl<<endl<<"Namen: ";  
                     cin >>l.Name;  
                     out <<endl<<l.Name<<endl;
          fclose(datei); 
          }
     cout<<endl<<"Sie haben " << name << " Name(n) gespeichert !"; 
     cout<<endl<<endl<<"Weiter mit beliebiger Taste.....";  
     getch();  
    }
    


  • Danke hast du auch a lösung in ansi c? weil da mit dem bin ich nicht so geläufig!! mfg surf.



  • Hallo!

    Um die Position an den Anfang der Datei zu setzen benutze am besten die Funktion

    rewind(fp);
    

    Gruß
    Michael



  • Wenn ich dich richtig verstehe möchtest du in einer bestehenden Datei eine Zeile vor dem Anfanf einfügen ist das richtig?.
    Falls ja die traurige Nachricht, es ist mit Arbeit verbunden. Am Ende einfügen geht einfach mit fopen(..."at") und dann schreiben.
    Um am Anfang einzufügen sind folgende Schritte nötig.

    1 Öffnen einer neuen Datei "D1"
    2 Schreiben der neuen ersten Zeile int "D1" bei dir Uwe\n
    3 Öffnen der bestehenden Datei "D2"
    4 Lesen aus dieser Datei "D2"
    5 Schreiben des gelesenen Inahlts aus "D2" nach "D1"
    6 4 und 5 solange wiederholen bis "D2" komplett kopiert ist
    7 Schließen von "D2"
    8 Umbennenen von "D2" nach "D2.old"
    9 Umbennenen von "D1" nach "D2"
    10 Falls alles gut ging "D2.old" löschen

    ob du "D2" characterweise mit getchar oder Zeilenweise mit fgets liest, ist aus meiner Sicht geleichwertig.
    😃 Ich bin aber gespannt auf die Kommentare die die Vor und Nachteile der beiden Verfahren gegeneinander abwägen.

    Ich hoffe es hat geholfen


Anmelden zum Antworten