문제
이 있는 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'
에서 주어진 왜곡.
제휴하지 않습니다 StackOverflow