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.