2

C の strchr 関数のこのサンプル コードがあります。

/* strchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a sample string";
  char * pch;
  printf ("Looking for the 's' character in \"%s\"...\n",str);
  pch=strchr(str,'s');
  while (pch!=NULL)
  {
    printf ("found at %d\n",pch-str+1);
    pch=strchr(pch+1,'s');
  }
  return 0;
}

問題は、このプログラムが見た目のキャラクターの位置をどのように計算するかということです。「pch」と「str」のポインタが関係していると思いますが、これはどのように機能するのでしょうか。

これをもう少し詳しく説明できる人がいれば素晴らしいでしょう。

ありがとう、エルジョブソ

4

1 に答える 1

8

str見つかった結果へのポインターから、文字列の最初の文字へのポインターである を単純に減算します。

これは、0 からインデックス付けされた文字の位置になります。これは簡単に理解できます。文字が文字列の最初の位置にある場合、返されるポインターは に等しくなりstr、したがって(pstr - str) == 0true になります。1 を追加すると 1 ベースになり、プレゼンテーション目的で役立つ場合があります。

于 2012-11-12T11:34:53.653 に答える