C中的String.indexOf函数

有一个C库函数将返回string中的字符的索引?

到目前为止,我发现的所有函数都是strstr函数,它将返回find的char *,而不是原始string中的位置。

我觉得

size_t strcspn(const char * str1,const char * str2);

是你想要的。 这里是一个从这里拉出的例子:

/* strcspn example */ #include <stdio.h> #include <string.h> int main () { char str[] = "fcba73"; char keys[] = "1234567890"; int i; i = strcspn (str,keys); printf ("The first number in str is at position %d.\n",i+1); return 0; } 

strstr返回一个指向所find的字符的指针,所以你可以使用指针运算:(注意:这段代码没有testing它的编译能力,它离伪代码只有一步之遥)。

 char * source = "test string"; /* assume source address is */ /* 0x10 for example */ char * found = strstr( source, "in" ); /* should return 0x18 */ if (found != NULL) /* strstr returns NULL if item not found */ { int index = found - source; /* index is 8 */ /* source[8] gets you "i" */ } 

编辑:strchr是更好的只有一个字符。 指针aritmetics说“Hellow!”:

 char *pos = strchr (myString, '#'); int pos = pos ? pos - myString : -1; 

重要:如果没有findstring,strchr()将返回NULL

你可以使用strstr来完成你想要的。 例:

 char *a = "Hello World!"; char *b = strstr(a, "World"); int position = b - a; printf("the offset is %i\n", position); 

这产生了结果:

 the offset is 6 

如果你没有完全绑定到纯C并且可以使用string.h,那么strchr() 请看这里

写你自己:)

来自BSD许可string处理库的代码,称为zString

https://github.com/fnoyanisi/zString

 int zstring_search_chr(char *token,char s){ if (!token || s=='\0') return 0; for (;*token; token++) if (*token == s) return 1; return 0; }