Loeschen einer Zeichenfolge aus Datei



  • So habe ich bisher die Datei ausgelesen.
    Ich suche eine Wort, was ich weiternutzte, um den Rest aus der Datei zunutzten.

    #include <stdio.h>
    #define input 20
    #define eint 'ENTITIES'
    int main(int anzahl, char argumente[])
    {

    char buf[input];
    int i;
    char c;
    FILE *datei_ptr;
    FILE *datei_ptr;
    char *name=argument[1];
    char *nam=argument[2];
    datei_ptr=fopen(name,"r");
    datei_pt=fopen(nam,"w");

    while ((c=fgetc(datei_ptr))!=EOF)
    {

    fscanf(datei_ptr,"%s",buf);

    /* hier soll eine schleife hin, wenn buf = enti ist weiterspringen
    nur das geht nicht. */

    }
    }



  • habe mich in der

    #define enti 'ENTITIES'

    so ist es richtig



  • Zeig mal eine Stück der Datei aus der "ENTITIES" entfernt werden soll, am besten eines in dem auch
    "ENTITIES" vorkommt.



  • Die Datei ist immer so aufgebaut. Nur dass das Wort, was ich suche nicht immer in der gleichen Zeile steht, sonst waer es ja billig.

    0
    LAYER
    2
    98_SONSTIGE
    70
    0
    62
    4
    6
    CONTINUOUS
    0
    LAYER
    2
    99_SONSTIGE
    70
    0
    62
    4
    6
    CONTINUOUS
    0
    ENDTAB
    0
    ENDSEC
    0
    SECTION
    2
    ENTITIES <------- Das soll raus !!!
    0
    POLYLINE
    8
    2_KUPFERUNTEN
    66
    1
    40
    0.150000
    41
    0.150000
    0
    VERTEX
    8
    2_KUPFERUNTEN
    10
    10.795000
    20
    -0.559999
    42
    1
    0
    VERTEX
    8
    2_KUPFERUNTEN
    10
    10.795000
    20
    -0.709999
    42
    1



  • Durch die Struktur der Platinenlayoutdatei, ist es relativ einfach die entsprechende Zeile zu entfernen

    Als Compiler habe ich MS ViaualStudio C/c++ 6.0 benutzt. Mit deiner TestDatei funktionierts

    Falls du einen anderen Compiler benutzt kann es sein das du anstelle von "_strnicmp" eine andere Funktion benutzen musst.
    Aber jeder Compiler hat in seiner Library eine ähnliche Funktion mit eine leicht anderen Namen.

    Die Funktion vergleicht 2 Strings ohne Rücksicht auf Groß und Klein Schreibung und auch nur die ersten n Zeichen.

    #include <stdio.h>
    #include <string.h>
    int main (int argc, char *argv[ ])
    {  
      FILE *InFile;  
      FILE *OutFile;  
      char line[156+1];// das +1 ist eine Marotte von mir um den üblichen Fehler zu    
                      // vermeiden das für die schließende Null kein Platz mehr da ist.      
    
      if (3 != argc) // argc enthält die Anzahl der Argumente argv[0] ist der programmname dehalb 3
        { 
        // Fehlerhandling  für Datei nicht gefunden / nicht öffenbar) 
        printf("\n\nAnzahl Parameter incorrect\n Usage: progname  infilename outfile\n");
        return(1);
        } 
    
      InFile=fopen(argv[1],"r");  
      if (0==InFile) 
        { 
        // Fehlerhandling  für Datei nicht gefunden / nicht öffenbar) 
        printf("\n\nInput Datei nicht gefunden\n Usage: progname  infilename outfile\n");
        return(2);
        } 
    
      OutFile=fopen(argv[2],"w");  
      if (0==OutFile) 
        { 
        // Fehlerhandling  für Datei nicht gefunden / nicht öffenbar) 
        printf("\n\nkann Outputdatei nicht öffnen\n Usage: progname  infilename outfile\n");
        return(3);
        } 
    
      while (NULL!=fgets(line,128,InFile))   // lese Datei bis zum Ende
      {  
        if (0==_strnicmp("ENTITIES",line,8))    // Prüfe ohne case insensitiv die ersten 8 Zeichen ob sie "ENTITIES" heißen
          continue;                           // Falls ja tu nichts (skip line)
        else
          fprintf(OutFile,line);                // Anderfalls schreibe Input in Outputdatei
      };  
    
      fclose(InFile);  
      fclose(OutFile);  
    return 0;
    }
    

    Da es nicht nach einer Hausaufgabe aussah, habe ich den ganzen Code gepostet.


Anmelden zum Antworten