0

コンパイルすると、次のエラーが表示されます。

構造体でも共用体でもない何かのメンバー「タイプ」の要求、

このエラーは、渡された char 配列と構造体へのポインターに対して strcmp() 関数が使用されている場合に発生します。

私がやろうとしているのは、「文字列」を渡し、「文字列」が配置されている配列のインデックスを返すようにすることです。

int returnDuplicate(char word , struct data *value)
{

int i = 0;
int placefinder = -60;

for (i ; i <= 50 ; i++)
{

  if ( strcmp(word, value.type[i]) == 0)
     {
       placefinder = i;

     }
}

return placefinder;
}




struct data {
             char type[50][16];
             double whole[50];
             double retail[50];
             double profit[50];
          };
4

4 に答える 4

7

私が見る2つの問題があります:

  1. (C)文字列にしたい場合char*は、パラメーターのタイプとして使用したいと考えています。word違いcharます。

    int returnDuplicate(char* word , struct data *value)

  2. valueへのポインタstruct dataです。したがって、メンバーにアクセスするため->ではなく、演算子を使用する必要があります。.

    strcmp(word, value->type[i])

于 2013-02-08T03:43:08.050 に答える
4

この行で:

if ( strcmp(word, value.type[i]) == 0)

typeのフィールドにアクセスしようとしていますが、それ自体ではなくvaluevalueのポインタです。その行を次のように変更してみてくださいstructstruct

 if ( strcmp(word, value->type[i]) == 0)

あなたが得ている.エラー->は、gcc. 何度も見ていると、その意味がわかります。

お役に立てれば!

于 2013-02-08T03:42:43.567 に答える
2

構造体へのポインターとして渡すため、代わりに演算子を使用して構造体のフィールドにアクセスvalueする必要があります。->.

if ( strcmp(word, value->type[i]) == 0)
于 2013-02-08T03:43:01.590 に答える
2

プロトタイプに * を追加します。 char * word

于 2013-02-08T03:44:45.733 に答える