문제

이 있는 C 라이브러리 함수를 반환하는 인덱스에서 문자의 문자열?

지금까지,모든 내가 찾는 같은 기능을 strstr 는 반환 발견 char*지 않는,그것의 위치에서 원래의 문자열입니다.

도움이 되었습니까?

해결책

내 생각에는

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 포인터를 반환 발견되는 문자,그래서 당신이 사용할 수 있는 포인터 연산:(주의:이 코드를 테스트하지 않는 능력을 컴파일,그것은 하나의 단계에서 의사.)

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 은 더 나은 단 하나의 char.포인터 aritmetics 말한다"하세요!":

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

중요: 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 순수한 사용할 수 있는 문자열입니다.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