我想提出一个代码,允许我多次返回关键字的位置。例如,下面的程序返回9,即数组内部的位置,即第一个Point的出现位置。但是,我希望搜索整个数组中的所有关键字,因为关键字可以在我负责搜索的数组中多次出现。基本上我希望能够返回9,17等等,具体取决于字符串。
我正在考虑进入某种循环,但我对strstr命令没有经验肯定。
#include <stdio.h>
#include <string.h>
int main()
{
char haystack[30] = "TutorialsPointandPoint";
char needle[10] = "Point";
char *ret;
ret = strstr(haystack, needle);
printf("The substring is: %d\n", ret-haystack);
return(0);
}
答案 0 :(得分:0)
当strstr返回指向第一次出现搜索字符串的指针时,只要没有得到空指针,就可以使用返回值作为strstr的新起点。
或多或少:
ret = strstr(haystack, needle);
while(ret!=NULL)
{
printf("The substring is: %t\n", ret-haystack);
ret++;
ret = strstr(ret , needle);
}
答案 1 :(得分:0)
Tobias走在正确的轨道上,但请记住strstr
将匹配字符串开头的针,因此您将陷入无限循环。
int main() {
char haystack[] = "TutorialsPointandPoint";
char needle[] = "Point";
char *search = haystack;
while(search != NULL)
{
search = strstr(search, needle);
if(search)
{
search++;
printf("The substring is: %zu\n", search - haystack);
}
}
return 0;
}
答案 2 :(得分:0)
试试这个......
int a=0;
ret = strstr(haystack+a,needle);
printf("The substring is: %d\n", (a=ret-haystack));
while(strlen(haystack+a+strlen(needle))>strlen(needle))
{
ret = strstr(haystack+a+strlen(needle),needle);
printf("The substring is: %d\n", (a=ret-haystack));
}