Wie zum zählen der vorkommen eines bestimmten Strings in einer Textdatei mit C

Ich versuche herauszufinden, wie man zählt die Anzahl einer bestimmten Zeichenfolge "test" tritt in eine text-Datei mit der C-Programmierung. Ich will das das Programm zum anzeigen der letzten Zählung bei Abschluss.

Dies ist der code, den ich habe kommen mit, aber es scheint nicht zu tun, um den trick. Das zähle ich zu generieren ist etwas niedriger als das, was tatsächlich in der Textdatei.

Erkennt jemand, was ich falsch mache? Ich bin ziemlich neu in der C-Programmierung, so dass jede Einsicht würde sehr geschätzt werden!

#include<stdio.h>
#include<string.h>

int main()
{
    FILE *ptr_file;
    char buf[200];
    char key[] = "test"; //the string I am searching for
    int wordcount = 0;

    ptr_file = fopen("input.txt","r"); //my input text file

    while (fgets(buf,200, ptr_file)!=NULL)
    {
        if((strstr(buf,key)) !=NULL){
            wordcount++;
        }
    }
    fclose(ptr_file);
    printf("%d",wordcount);
}
Nur zu sagen, der Algorithmus falsch ist, ist nicht hilfreich. Ich vermute, dass S. S. davon aus, dass strstr finden undelimited Streicher und das ist der Fehler.
Führende Fragen für mehr Korrektheit Fragen: was bedeutet Ihre Umsetzung tun, wenn der gesuchte text Auftritt, mehr als einmal in eine Zeile? Was passiert, wenn eine Zeile hat eine Länge von 200 Zeichen oder mehr?
Was passiert, wenn die Zeile enthält die Sequenz 'testestestest'? Was soll passieren?
beachten Sie, dass die Nachricht, die Sie geschrieben, ist eine Warnung, kein Fehler. Darüber hinaus (und sonstige Erklärungen) sollte bearbeitet werden, in Frage. Fragen sollten verständlich sein, ohne das Lesen der Kommentare. SO verwendet eine Q&A, nicht-forum-format. Sollte Ihr Programm eine Suche nach Wörtern (z.B. wäre es nicht mit "Test", "bezeugen" oder "Wettbewerber"), oder alle vorkommen des Teilstrings?
bitte noch einmal Bearbeiten Klarstellungen zu deiner Frage, anstatt Entsendung Sie als Kommentare. Kommentare sind nicht gut geeignet für die Diskussion.

InformationsquelleAutor sheebs | 2011-11-26

Schreibe einen Kommentar