使用字符串打印出文本文件中的单词时出错

时间:2016-03-21 04:52:49

标签: c string strstr

我的代码使用Visual Basic:

#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;
}

当我试图找到“men of”这个词时,程序会给出一个不包含“men of”字样的字符串

enter image description here

1 个答案:

答案 0 :(得分:2)

scanf()不扫描men of它只扫描men。 您应该使用fgets()来扫描men of

fgets()附带换行符。

在将换行符传递给strstr()之前,你必须删除换行符:

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

使用fgets()读取的字符串也是如此。