0

编译时出现错误:

请求非结构或联合的成员“类型”,

当 strcmp() 函数用于传递的 char 数组和指向结构的指针时,会发生此错误。

我要做的是传入一个“字符串”并让它返回“字符串”所在的数组中的索引。

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

你有两个我看到的问题:

  1. 如果您希望它是 (C) 字符串,您希望将其char*用作参数的类型。word不是char

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

  2. value是指向 a 的指针struct data。因此,您必须使用->运算符,而不是.访问其成员。

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

于 2013-02-08T03:43:08.050 回答
4

在这一行:

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

您正在尝试访问 的type字段value,但value它是指向 a 的指针struct,而不是 astruct本身。尝试将该行更改为

 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 回答