2014-11-20 11 views
5

Ich bin ein absoluter Amateur, wenn es um C geht und ich hatte einige Probleme mit dem Versuch, dieses Stück Code zu schreiben. Ich möchte, dass die Textdatei auf jede Zeile überprüft wird, die der angegebenen Zeichenfolge entspricht.Suche Textdatei für übereinstimmende Zeichenfolge

Zum Beispiel, wenn "stackoverflow" in der Textdatei war und die Zeichenfolge, die ich eingegeben wurde, "www.stackoverflow.com" war, sollte es eine positive Übereinstimmung zurückgeben.

Aber derzeit sucht es nach der Zeichenfolge innerhalb der Textdatei, die das Gegenteil von dem ist, was ich will. Ich würde mich über Hinweise/Tipps freuen!

int Check(char *fname, char *str) { 
FILE *file; 
int i = 1; 
int r = 0; 
char temp[1000]; 

if((file = fopen(fname, "r")) == NULL) { 
    return(-1); 
} 

while(fgets(temp, 1000, file) != NULL) { 

    if((strstr(temp, str)) != NULL) { 
     printf("Host name found on line: %d\n", i); 
     printf("\n%s\n", str); 
     r++; 
    } 
    i++; 
} 

if(r == 0) { 
    printf("\nHost name not blocked.\n"); 
} 

if(file) { 
    fclose(file); 
} 
return(0); 
} 
+2

Hallo, willkommen zu StackOverflow! Haben Sie versucht, 'strstr (temp, str)' mit 'strstr (str, temp)' zu wechseln? –

+0

Ja, aber wenn ich es versuchte, würde ich keine Ergebnisse erhalten, auch wenn die Strings, die ich verglichen habe, identisch waren. – Piglet

+3

Bitte beachten Sie, dass 'fgets' einen abschließenden Zeilenumbruch (' \ n') enthält; Sie müssen das vielleicht selbst entfernen. –

Antwort

1

Warum getline nicht() eine Zeile-für-Zeile-Puffer zu erhalten und tun dann eine strstr() in diesem Puffer?

+0

Wahrscheinlich, weil [es ist keine C Standard Library-Funktion] (http://stackoverflow.com/questions/13112784/undefined-reference-to-getline-in-c). – usr2564301

Verwandte Themen