在C中打印节点时出错?

时间:2013-10-15 01:35:03

标签: c structure nodes

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

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);
        }

2 个答案:

答案 0 :(得分: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<它看起来也很可疑

答案 1 :(得分:0)

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

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