0

我正在尝试打印节点中的内容,但它显示以下错误

main.c: In function 'main':
main.c:83:37: error: request for member 'emails' in something not a structure or union
printf("%s\n", tmpNodesUnique[l].emails);
^

运行以下代码后出现上述错误。我在这里做错了什么?

Node *tmpNodesUnique[nodesCount];
    int uniqueFound = 0;
    tmpNodesUnique[0] = &tmpNodes[0];
    for (k=1; k<10; k++){
        if (strcmp(tmpNodesUnique[uniqueFound]->emails, tmpNodes[k].emails) != 0){
            tmpNodesUnique[++uniqueFound] = &tmpNodes[k];
        }
    }

    for (k=0; k<=uniqueFound; k++){
      tmpNodesUnique[k]->emails;
    }
    for(l = 0; l <= nodesCount; l++){
            printf("%s\n", tmpNodesUnique[l]->emails);
        }
4

2 回答 2

0

可能您的结构Node定义为

typedef struct {
    char *emails;
} Node;

这意味着如果要打印成员emails,则必须使用.运算符而不是->运算符

for(l = 0; l <= nodesCount; l++){
   printf("%s\n", tmpNodesUnique[l].emails);
}

正如评论中指出的那样,以下行什么都不做,这是一个不完整的陈述

for (k=0; k<=uniqueFound; k++){
  tmpNodesUnique[k]->emails;
}

另外确保你真的想要k<=而不是k<它看起来也很可疑

于 2013-10-15T01:55:01.723 回答
0

看起来您没有编译您期望的代码。

该错误使用.成员运算符处理电子邮件。虽然您->显示的代码中有一个指针运算符。所以代码是不同的(并且错误与点有关,因为它表明它需要一个结构或联合成员,而您已经明确声明了一个指针)。

于 2013-10-15T01:55:27.110 回答