我看到了this的问题,但没有一个答案是我正在寻找的。我试过strstr
但它返回一个指针而不是一个整数索引。
我需要查找字符串a
是否包含字符串b
,如果是,则包含它所在的位置,类似于strcmp
返回的索引。是否有功能或简单的方法在C中执行此操作?
例如,如果a
为“foobar”且b
为“bar”,则此函数/方法将返回3,因为“bar”位于“foobar”的索引3处。
感谢任何帮助!
答案 0 :(得分:4)
您可以使用strstr
以及一些指针算法。
char *result = strstr(a, b);
if (result != NULL) {
printf("index = %tu\n", result - a);
}
此处,result
指向a
之前的特定字节数。所以,如果你减去这两个,那就是你的指数。
答案 1 :(得分:1)
您可以通过减去指向字符串开头的指针a
轻松地将返回的指针转换为索引:
char *p = strstr(a, b);
int i = p ? p - a : -1;
(另外,strcmp
不会返回索引。)
答案 2 :(得分:0)
你走了:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[]="foobar";
char str2[]="bar";
char *ptr;
if((ptr = strstr(str1, str2)) != NULL) {
printf("Start offset: %td\n", ptr - str1);
}
return 0;
}