在C语言中:读取输入字符串,在字符数组中查找

在C语言中:读取输入字符串,在字符数组中查找,c,C,在编写另一个程序时,它读取一个txt文件,并将所有字母字符和空格(作为\0)存储在一个字符数组中,而忽略其他所有内容。这部分是有效的 现在我需要它做的是读取用户输入的字符串,并在数组中搜索该字符串,然后在每次出现时打印该单词。我在C语言中的I/O方面很糟糕,如何读取字符串然后在字符数组中找到它 #include <stdio.h> ... char str [80]; printf ("Enter your word: "); scanf ("%s",str); char*

在编写另一个程序时,它读取一个txt文件,并将所有字母字符和空格(作为\0)存储在一个字符数组中,而忽略其他所有内容。这部分是有效的

现在我需要它做的是读取用户输入的字符串,并在数组中搜索该字符串,然后在每次出现时打印该单词。我在C语言中的I/O方面很糟糕,如何读取字符串然后在字符数组中找到它
#include <stdio.h>
...

char str [80];
printf ("Enter your word: ");
scanf ("%s",str);  

char* pch=strstr(fileData,str);
while (pch!=NULL)
{
 printf ("found at %d\n",pch-fileData+1);
 pch=strstr(pch+1,str);
}
... char-str[80]; printf(“输入您的单词:”); scanf(“%s”,str); char*pch=strstrstr(fileData,str); while(pch!=NULL) { printf(“位于%d\n”,pch fileData+1); pch=strstrstr(pch+1,str); }
  • 也将用户输入的字符串作为字符数组读入(因为字符串在C中基本上是char*)

  • 使用像Boyer Moore或Knutt Morris Pratt(更通俗地称为KMP)这样的字符串匹配算法——如果你喜欢这些算法的C实现,就用谷歌搜索它——因为它们是一种整洁、经过尝试和测试的搜索字符串的方法,可以搜索子字符串和模式匹配等等

  • 对于每种情况的索引,打印找到单词的位置?或者,如果愿意的话,可以选择出现的次数


  • 一般来说,可以找到的C字符串函数列表的格式是str*或strn*,具体取决于需求。

    一个for循环,另一个for循环(称为嵌套循环)。检查数组中的所有字母,对于每个字母,检查输入字符串中的所有字母,并找出数组的该部分是否与输入字符串匹配。如果有,请将其打印。

    +1表示在正确的轨道上。如果想考虑第一个空间是输入字符串的结尾,SCANF的“%s”格式是很好的。如果需要整行,则需要“%[^\n]”。然后,您应该确保通过放置ala
    (“%.*s”,sizeof str,str)
    读取的字符不超过80个。而且,您应该使用strstr()而不是strchr()来查找子字符串。@mikecavs-Yes。这是带有文件内容的char*。pInFile=fopen(填充名,“r”);fread(&fileData,缓冲区大小,1,pInFile)@ErikW否-格式不是正则表达式<代码>“%.*s”表示接受最大字符串长度参数,后跟指向字符串缓冲区参数的指针。格式在.1中解释。基本上是重复他的要求。2.对于初学者来说,这是过分了吗?strstr怎么了?我在重复他的第二段,在他说了他已经做过的事情之后,“现在我需要做的是…”这一部分,我没有重复之前的任何内容。此外,我还提出了一个更完整的解决方案,它可以处理所有情况并找到所有可能的匹配项。最后,我提供了以str*开头的所有C系列字符串函数的简单替代方案,因此我在上面给出了答案。