Bestimmte Textstellen aus Array oder Text-File auslesen
-
Hallo!
Schon seit längerem probiere ich, folgendes Problem zu lösen:
Ich lese eine textdatei ein und gebe diese in der konsole aus. gespeichert wird das ganze in einem array. das textfile sieht so aus:
aaaa bbbb cccc
dddd: text1aaaa bbbb cccc
dddd: text2aaaa bbbb cccc
dddd: text3eee fff
Nun möchte ich nur die "text"-stellen auslesen sodass ich sie weiterverarbeiten kann. "dddd" ist immer das gleiche wort.
probiert habe ich schon viel, geklappt hat leider noch nichts.
eine überlegung wäre es, regular expressions einzusetzen, aber ist das sinnvoll?
ich wäre euch sehr dankbar!
lg
tricki :xmas2:#include "stdafx.h" #include "stdlib.h" #include "stdio.h" #include "process.h" int _tmain(int argc, _TCHAR* argv[]) { FILE *fil; char zeichen[1000]; fil = fopen("D:\\Image\\snmp.txt", "r"); if (fil == NULL) { printf("\nDatei D:\\Image\\snmp.txt kann nicht geöffent werden\n"); exit(-1); } while(!feof(fil)) { scanf(fil, "%c", &zeichen); if (!feof(fil)) printf("%c", *zeichen); } fclose (fil); system("PAUSE"); return 0; } if (strcmp(zeichen[i], "Value") == 0) { printf("hallo"); }
-
Erstmal: Du hast da ein Array von 1000 Zeichen angelegt, verwendest aber die gesamte Zeit nur das erste Element dieses Arrays (sowas nennt sich "Verschwendung", außerdem überschreibst du ständig deine früheren Eingaben). Nutze doch die volle Größe des Arrays aus, indem du den gesamten Block per fread() oder fgets() einliest.
Zweitens: weißt du genau, an welcher Stelle in der Datei (absolut - d.h. Anzahl der Zeichen vom Dateianfang gezählt) sich die gesuchten Teile befinden? Wenn ja, kannst du mit fseek() an genau diese Position springen und dann den interessanten Teil auslesen. Wenn nicht, mußt du doch die gesamte Datei einlesen und im Speicher nach der Kennzeichnung "dddd" suchen (strstr() hilft dabei) - 6 Zeichen hinter der gefundenen Position beginnt dein Text.