c - 如何在 C 中的字符串中查找字符串?

标签 c c-strings

<分区>

首先,我已经尝试使用这里提到的 strstr() 方法,但这对我要解决的问题不起作用。

我要获取用户输入的字符串(目标字符串),可以是一个词,也可以是一个完整的句子。然后逐行扫描输入文本文件并检查该输入字符串是否存在于文件的任何行中。如果是,则将相应的文本文件行号和可以找到目标字符串的全文文件行打印到屏幕上。

我在使用strstr(line, targetString) 方法时遇到的问题如下:
假设文件中有一句话,“我用一只松鼠用力拍打那条鱼”。然后,我输入我的目标字符串,“我在猫墓地里嬉戏,不屈不挠的欢乐。”它将显示目标字符串已匹配,大概是因为它只是找到与“I”的匹配项。但是,仅当目标字符串的逐字匹配与文本文件行中的某个子字符串匹配时,我才需要它匹配。

有什么想法可以解决这个问题吗?提前致谢!

代码:

FILE *inputFile = fopen(fileName, "r");

i = 1;
while (fgets(line, sizeof line, inputFile) != NULL)
{
    if ((strlen(line) != 1) && (strstr(line, targetString)))
    {
        printf("Line %d: ", i);
        printf("%s\n\n", line);
    }
    i++;
}

最佳答案

strstr() 应该可以解决您的问题。确保两个参数实际上都有空格而不是\0 字符。与许多标准 C 库函数一样,strstr() 将\0 视为字符串终止符。根据您的描述,我猜测问题是您一次读取一行并以\0 终止每一行,然后开始一次匹配一行。如果您一次将所有字符串读入一个缓冲区,该缓冲区的大小等于删除换行符的文件大小,则您可能能够解决您的问题。

为了能够更好地回答您的问题,我需要查看您当前的源代码以及您希望运行的测试用例。

关于c - 如何在 C 中的字符串中查找字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573578/

相关文章:

c - char 类型数组使用什么操作数?

c - Magickcore 无法设置/获取单个像素

c - 使用 malloc 时遇到问题

c - c中的字符串文字

c - C中字符串数组的分配空间

c - 不明白为什么会出现段错误

c++ - 为什么未初始化的全局变量是弱符号?

对 C 中的 GCC 和 scanf 感到困惑

函数声明文件中需要 C 头指令吗?

C++ atof/_wtof,舍入误差