正規表現 - CでのString.indexOf関数




string indexof java (4)

文字列内の文字のインデックスを返すCライブラリ関数はありますか?

これまでに見つけたのは、strstrのような関数で、見つかったchar *を返します。元の文字列の場所ではありません。


あなたはあなたが望むものを達成するために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

私はそう思う

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は1つの文字のためだけに良いです。 ポインタaritmeticsは "Hellow!"と言っています:

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

重要:文字列が見つからない場合、strchr()はNULLを返します。





string