Wie setzte ich ein Positions Zeiger? wenn ich a+ benutze



  • So,

    Ich habe ein Programm, was mir Wörter in eine Datei schreibt. Als letzes wort gebe ich "ende" ein, damit das programm weis wann schluss ist.

    So, jetzt habe ich das problem, dass wenn ich was neues anhängen will ( a+ )
    ,dass er dann hinter dem "ende" schreibt..er soll aber bei ende anfangen also überschreiben.

    Wie kann ich also den Zeiger ein oder 2 Char werte nach vorne bewegen, so dass "ende " überschriben wird?

    Wenn nicht mit a+...vielleicht dann mit SEEK_CUR...aber davcon hab ich keine ahnung..

    koennt ihr mir mal ein paar Tips geben

    so sieht mein char wert aus

    fwrite(Land1[x],sizeof(char),max_string_laenge,fhd);



  • Ok andere Frage,

    Wie lese ich aus einer datei aus?

    Also genauer gesagt weis ich das ja aber woher weis die funktion
    wie lang die Datei ist..also wie viele Werte (strings) in der datei stehen ?



  • datei-pointer auf das e von ende setzen.
    SEEK_END - (3 oder 4); // weiß grad net wie der das rechnet
    und dort dann weiterschreiben

    Meep Meep



  • Das ist ja das bloede..wie sieht die Zeile denn aus?

    Reicht es wenn ich

    fseek(fhd,-20,SEEK_END);

    mache

    weil 1 string ist 20 lang

    .................................................

    Aber bei mir überschreibt er immer wieder alles.
    ich hab das so

    void SCHREIBEN(char** Land1,char** Stadt1,int zaehler)
     {
      FILE *fhd;
    
      fhd=fopen("c:\\P12A1.txt","w+");
    
      int x=0;
    
      fseek(fhd,-40,SEEK_END);
              for(x=0;x<=zaehler;x++)
             {
    
                    fwrite(Land1[x],sizeof(char),max_string_laenge,fhd);
                    fwrite(Stadt1[x],sizeof(char),max_string_laenge,fhd);
             }
    
      fclose(fhd);
      read(zaehler);
    }
    


  • So, jetzt hab ichs

    Ich muss die datei mit

    fhd=fopen("c:\\P12A1.txt","r+");
    

    und nicht mit

    fhd=fopen("c:\\P12A1.txt","w+");
    

    oeffen.

    Kann mir mal einer erklären, was daran anders ist.
    Also bei w+ wurde immer alles überschrieben und nur das neu geschriebene stand dort.

    bei r+ kann ich was drann hängen ohne das der rest gelöscht wird.

    Also was ist der genau unterschied zwischen r+ und w+ ?????



  • Den Unterschied kannst Du z.B. hier nachlesen: http://www.hmug.org/man/3/fopen.html

    Wenn Du die Datei mit w+ öffnest, wird sie neuerstellt, wenn sie bisher nicht existiert hat, ansonsten überschrieben.
    Wenn Du sie mit r+ öffnest, wird sie nicht überschrieben.


Anmelden zum Antworten