我的代码使用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”字样的字符串
答案 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()
读取的字符串也是如此。