5 Stimmen

C Anfänger: Wie man nach bestimmten Wörtern in einer Datei (Zeile für Zeile) in C sucht

Ich muss in einer Datei Zeile für Zeile nach zwei bestimmten Wörtern suchen und wenn sie existieren, "Gefunden!" ausgeben.

Dies ist file.txt (hat vier Spalten)

bill gates 62bill microsoft 
beyonce knowles 300mill entertainment 
my name -$9000 student

Das folgende ist die Idee, die ich hatte, aber es scheint nicht zu funktionieren

char firstname[];
char lastname[];
char string_0[256];

file = fopen("file.txt","r+");

while((fgets(string_0,256,file)) != NULL) {

  // scannt die Zeile und setzt das 1. und 2. Wort in diese Variablen
  fscanf(file,"%s %s",&firstname, &lastname);

  if(strcmp(firstname,"beyonce")==0 && strcmp(lastname,"knowles")==0){
    printf("Ein Treffer wurde gefunden");
  }
}

fclose(file);

Bitte helfen Sie. Kann es sein, dass der Zeiger in der while-Schleife nicht zur nächsten Zeile bewegt wird? Und wenn ja, wie kann ich das beheben?

5voto

Thomas Dignan Punkte 6956

Statt fscanf auf die Datei aufzurufen, nachdem Sie bereits mit fgets daraus gelesen haben, sollten Sie sscanf auf die string_0 Variable aufrufen, in die Sie die Daten beim Aufruf von fgets kopieren.

4voto

Erwald Punkte 2100

Ein Weg besteht darin, die fget-Funktion zu verwenden und Teilstrings im Text zu finden. Versuchen Sie etwas wie dies:

int main(int argc, char **argv)
{
    FILE *fp=fopen(argv[1],"r");
    char tmp[256]={0x0};
    while(fp && fget(tmp, sizeof(tmp), fp))
    {
        if (strstr(tmp, "word1"))
            printf("%s", tmp);
        else if (strstr(tmp, "word2"))
            printf("%s", tmp);
    }
    if(fp) fclose(fp);
    return 0;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X