C中的String.indexOf函数

时间:2008-08-07 15:00:35

标签: c string

是否有C库函数会返回字符串中字符的索引?

到目前为止,我发现的所有功能都像strstr一样会返回找到的char *,而不是它在原始字符串中的位置。

7 个答案:

答案 0 :(得分:33)

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

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" */
}

答案 1 :(得分:13)

我认为

  

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

是你想要的。以下是从here

中提取的示例
/* 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;
}

答案 2 :(得分:11)

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

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

重要提示:如果未找到任何字符串,strchr()将返回NULL

答案 3 :(得分:3)

您可以使用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

答案 4 :(得分:0)

自己写:):

来自BS的BSD许可字符串处理库的代码,称为zString

https://github.com/fnoyanisi/zString

python manage.py migrate <app_name> 

答案 5 :(得分:0)

你可以写

s="bvbrburbhlkvp";
int index=strstr(&s,"h")-&s;

在给定的乱码中找到'h'的索引。

答案 6 :(得分:0)

如果你没有完全依赖纯C并且可以使用string.h,那就是strchr() See here