Text in einer Datei überschreiben...



  • Morgen

    Ich habe ein kleines Problem mit einem Prgrammchen, welches ich am schreiben bin.

    Das Ziel sollte es sein, das ein Text mit einem anderen Text überschrieben wird. Nur funktioniert das ganze nicht, was ihr euch ja denken könnt :).

    Das ganze sieht bissher so aus:

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
      FILE *datei;
      char *suche;
      char *suchtext = "VERSION:2.0";
      char *ersetztext = "VERSION:1.0";
    
      datei = fopen("version.txt","r+");
      if(!datei)
      {
        printf("Die Datei konnte nicht geoeffnet werden");
      }
      else
      {
        while(fgets(suche,12,datei) != NULL)
        {
          if(strcmp(suche,suchtext) == 0)
          {
            printf("Gefunden: %s",suche);
            fprintf(datei,ersetztext);
          }
          else
          {
          printf("%s",suche);
          }
        }
    
        printf("\n\nAlles ok, schliesse Datei");
        fclose(datei);
      }
    
      return 0;
    }
    

    Wenn ihr wisst warum das nicht fubktioniert dann schreibt bitte.
    Danke

    Gruss grub



  • funktionieren kann das erstmal nur wenn der zu ersetzende text die gleiche länge hat wie der neue...
    wenn nicht müsstest du wenn der neue länger ist das allte komplette buffern und verschieben oder wenn er kürzer ist, zurückschieben (schieben heisst in dem sinne ab dem punkt die datei komplett neu schreiben)....
    an sonsten in deinem fall kannst du dir mit ftell die aktuelle postion vorher merken und wenn du den text gefunen hast mit fseek zu der gemerkten postion gehen und die zeichen überschreiben



  • Danke jetzt fnktionierts....

    ftell() sei dank 🙂


Anmelden zum Antworten