2016-03-21 6 views
0

Ich habe meinen Code Visual Basic:Fehler, wenn sie in einer Textdatei Zeichenfolge mit Suchen nach Wort Ausdrucken

#define _CRT_SECURE_NO_DEPRECATE 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void) { 
    FILE *inputFile = NULL; 
    char line[9999]; 
    char word[9999]; 
    int count = 1; 
    char *result; 

    inputFile = fopen("some_text.txt", "r"); 

    printf("Enter the target string: "); 
    scanf("%s", word); 

    while (fgets(line, sizeof line, inputFile) != NULL) { 
     result = strstr(line, word); 
     if (result != NULL) 
     { 
      printf("%d. %s\n", count, line); 
     } 
     count++; 
    } 

    fclose(inputFile); 

    return 0; 
} 

Als ich versuchte, die Worte „Männer“ zu finden, gibt das Programm eine Zeichenfolge, die tun enthalten die Worte nicht „Menschen“ überhaupt durchsucht es nur men

enter image description here

+0

der zweite Absatz (Zeile 5) hat kein Wort "Männer von" –

+0

Ich vermute, Sie meinten nicht "Visual Basic"? Meinst du "Visual Studio" vielleicht? – RastaJedi

Antwort

2

scanf() nicht men of scannt. Sie sollten fgets() verwenden, um men of zu scannen.

fgets() kommt mit einem Newline-Zeichen.

Sie haben die Newline-Zeichen, um loszuwerden, bevor es zu strstr() vorbei:

fgets(line, sizeof line, inputFile); 
size_t n = strlen(line); 
if (n > 0 && line[n - 1] == '\n') 
{ 
    line[n - 1] = '\0'; 
} 

Das gleiche gilt für die Zeichenfolge, die Sie fgets() mit lesen.

Verwandte Themen