String aus Datei suchen
-
Ich lese so den Inhalt einer Datei ein :
while((Inhalt = fgetc(dat)) != EOF) { if(Inhalt == '\n') { i++; } }
...und such hier eben die Anzahl der '\n'.
Jetzt will ich aber nach einem String suchen, aber irgendwie klappt das nicht.
Ich versuchs so :char Stat[]= "Statistik"; while((Inhalt = fgetc(dat)) != EOF) { if(Inhalt == Stat) { j++; } }
Da bekomme ich aber ne Fehlermeldung : 'int' unterscheidet sich von 'char [10]' in Bezug auf die Anzahl vorgenommener Dereferenzierungen .
Kann mir einer sagen was ich hier falsch mache ?
-
toxor schrieb:
... while((Inhalt = fgetc(dat)) != EOF) { if(Inhalt == Stat) { j++; } }
ungefähr so könnt's gehen
while((Inhalt = fgetc(dat)) != EOF) { if(Inhalt == Stat[j]) { j++; if (Stat[j] == 0) { // string gefunden } } else { j = 0; } }
-
wow danke das funtzt, jetzt muss ich nur noch checken warum ^^
-
toxor schrieb:
wow danke das funtzt, jetzt muss ich nur noch checken warum ^^
funzt aber nicht immer. z.b. wenn du nach 'suchmich' suchst und in der datei z.b. 'susuchmich' steht.
-
Um strings zu vergleichen, benutzt man man: strcmp(3). Um Teilstrings zu scuhen man: strstr(3)
-
supertux schrieb:
Um strings zu vergleichen, benutzt man man: strcmp(3). Um Teilstrings zu scuhen man: strstr(3)
die sind aber beim 'online'-suchen nicht immer praktisch.
-
Stellt sich die Frage ob "online-suchen" überhaupt praktisch ist.
-
Tim schrieb:
Stellt sich die Frage ob "online-suchen" überhaupt praktisch ist.
dir als PIC-coder wird sicher der eine oder andere anwendungsfall einfallen.
-
Stringhandling auf einem PIC? Ich bitte dich
-
Also ich hab das jetzt mal mit strcmp versucht, aber auch da hab ich ein Problem.
char Inhalt2[600]; char Stat[]= {"Ende"}; while(!feof(dat)) { fgets(Inhalt2,sizeof(Inhalt2),dat); if((strcmp(Stat,Inhalt2))==NULL) { printf("Gefunden"); } else { printf("Nicht gefunden"); } }
Also er gibt mir schon eine korrekte Ausgabe, nämlich wenn er "Ende" gefunden hat, gibt er "Gefunden" aus. Und wenn er "Ende" nicht gefunden hat, gibt er mir für jede Zeile die er eingelesen hat und kein "Ende" gefunden hat, "Nicht gefunden" aus, was ja auch richtig ist, da ich ja zeilenweise auslese.
Kann mir irgendeiner ne geschickte Variante verraten, das ich nur einmal "Nicht gefunden" ausgegeben bekommen, wenn ich keiner Zeile das gesuchte Wort vorhanden ist ? Ich komme nicht drauf
-
habs jetzt doch mit nem Zeilenzähler lösen können