Datei - Wort finden
-
Hallo, ich hab mir schon seit ein paar Tagen den Kopf zerbrochen über meine folgende Problematik.
Ich hab eine Text-Datei, deren Struktur immer variert. Ich möchte aus dieser Datei z.B. das Wort "System" suchen. Wenn er dieses Wort gefunden hat, soll er die ganze Zeile kopieren.
Ich hab wirklich nich so den Plan was und wie ich an die Sache rangehen soll.Mir sind Gedanken in Richtung fseek() fgetc() gekommen, leider weiss ich nich genau wie ich diese gekonnt einsetzen kann.
Ich hab mir schon die Faq dazu druchgelesen und auch schon im Forum geguckt, aber so richtig hat mir das nich geholfen.Kann mir wer ne Hilfestellung geben?
mfg -Kruggi
-
Mit man: fgets(3) kann man praktisch eine ganze Zeile aus einer Datei lesen. Mit man: strstr(3) kann man herausfinden, ob ein String in einem anderen enthalten ist.
-
... und mit strcpy() bzw strncpy() kopiert man den string
-
int main(void)
{
FILE *fp;int i=0,test=1;
char kopierer[1024],ausgabe[1024];;
fp= fopen ("quelli.txt", "r+");
while(test=1)
{
if(fgets(kopierer,sizeof(kopierer),fp))
{if(strstr(kopierer,"system"))
printf("%s",kopierer);
} else test=0; // damit er zum test einfach mal die datei ausgibt}
getch();
}soweit so gut. wie mach ich das nun mit dem suchen nach dem wort "system" ich hab von dem strstr(); überhaupt keinen plan.
-
-
supertux schrieb:
bringt mir echt viel...geh mal davon aus das ich nich so der freak bin und ich mir die beschreibung dazu schon vor deinem interessanten statement durchgelesen habe.
kann keiner ein kleines bespiel dazu geben?
-
Ich weiß nicht, was du an strstr nicht verstehst. strstr liefert den Zeiger zurück, wo der Teilstring anfängt, falls vorhanden, NULL sonst, man braucht kein freak zu sein, um es zu schnallen.
-
ok ich habs, danke bis hier hin.
ich stehe jetzt aber noch vor einem weiteren prob.
ich habe folgende zeile in eine char gespeichert.
<div style="position:absolute;left:308px;top:326px;z-index:303" title="[b]System 1[/b]"><a style="cursor:crosshair;" id="3" href="map-system.html?View.System.select=1"><img src="http://" alt="" /></a></div>
wie kann ich das schwarz gedruckte rausfiltern? wobei die zahl varieert?!
idee? ne funktion?danke
-
Nehmen wir an, dass <b>TEXT</b> alles in einer Zeile gespeichert wird, hier ein kleines Beispiel. Ich behandle nur solche, die in der selben Zeile sind, mehrzeilige <b> sind dem Leser überlassen (als Übung)
char* bold(const char* line) { char *b, *b_close, *bold; size_t len; b = strstr(line, "<b>"); if(!b) return NULL; /* es gibt kein <b> in line */ b += 3; /* wegen b> */ if(!*b) return NULL; /* <b> ist das Ende des strings --> do nothing */ b_close = strstr(line, "</b>"); if(!b_close) return NULL; /* es gibt kein </b> in line */ b_close--; /* wegen < bei </b> */ if(b_close < line) return NULL; /* </b> ist Anfang --> do nothing */ len = b_close - b; bold = malloc(len + 1); if(!bold) { fprintf(stderr, "Du hast keinen Speicher mehr!\n"); return NULL; } strncpy(bold, b, len); bold[len] = 0; return bold; }
(der code ist on the fly enstanden, hab nicht getestet. Funktioniert bei sowas wie "XXXXXX<b>TEXT</b>XXXXXX" aber nicht bei "</b>XXXX<b>TEXT</b>" oder "XXXX<b>")
-
ich danke dir, der code is wirklich gut...freak
aber dashat mir echt geholfen das alles ein bisschen besser zu verstehen.big dankeschön -krug