有没有C图书馆功能将返回该指数的一个字一个字符串?

迄今为止,我已经找到都能像strstr将返回现char*,没有它的位置在原来的字符串。

有帮助吗?

解决方案

我认为,

位置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 返回一个指向现的性格,这样你可以使用的指针运算:(注:这种代码不是测试其能力,以汇编,这是一步之遥伪代码。)

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说"你好!":

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

重要的是: strchr()returns 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和可以使用的字符串。h有strchr() 看看这里

写你自己:)

代码从BSD许可串的处理库C,被称为 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;
}

你可以写

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

查找的索引 'h' 在给定的混淆.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top