-2

ある文字列 (s1) の文字が他の文字列 (s2) に出現することを見つけようとしています。

これは私のコードの一部です。

for(;i<strlen(s1);i++)
{
   int x=strchr(s2,s1[i]);
   if(x>0)
   count++;
}

しかし、コンパイル時に strchr() を指すエラーが発生し、

error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive]

strchr() 関数を使用する際の問題を誰でも説明してください。

4

1 に答える 1

2

割り当てが間違っています strchr は int を返さず、見つかった文字列の最初の文字のアドレスを返します:

int x=strchr(s2,s1[i]);

次のようにする必要があります。

char* x = strchr(s2, s1[i]); 
//         ^ returns char* 

マニュアルを読む

char *strchr(const char *s, int c);

戻り値 関数と関数
は、一致した文字へのポインタを返すか、文字が見つからない場合に返します。終端の null バイトは文字列の一部と見なされるため、 c が として指定されている場合、これらの関数はターミネータへのポインタを返します。 strchr()strrchr()NULL'\0'

など:

if(x>0)

次のようにする必要があります。

if(x != NULL)

あるいは単にif(x)

于 2014-02-08T06:41:29.387 に答える