c - 错误 : request for member ‘-----’ in something not a structure or union

标签 c nodes

用gcc编译时出现这两条错误信息

error: request for member ‘name’ in something not a structure or union
    else if(strcmp((*node).name, (*root).name) < 0)



error: incompatible types when assigning to type ‘char[101]’ from type ‘char *’
    (*node).name = SomeString;

根据我的发现,第一个错误通常发生在您尝试调用这样的节点时

node.name;

代替

(*node).name;

因为这里不是这种情况,所以我想知道导致错误的原因以及如何解决它?

节点定义为:

struct person {
    char name[42];
    struct person *left, *right;
} root;

创建者

struct person *node;
node = (struct person *) calloc(1, sizeof(struct person));
(*node).name = SomeString;

最佳答案

数组没有赋值运算符。你必须使用标准函数 strcpy在 header 中声明 <string.h>当您想将字符串分配给字符数组时用于字符数组

#include <string.h>

//...

strcpy( (*node).name, SomeString; );

至于第一个错误然后root不是指针。你必须写

else if(strcmp((*node).name, root.name) < 0)

代替

else if(strcmp((*node).name, (*root).name) < 0)

我认为定义 root 会更正确作为

struct person {
    char name[42];
    struct person *left, *right;
} *root = NULL;

关于c - 错误 : request for member ‘-----’ in something not a structure or union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785383/

相关文章:

C、将半字节从输入转换为十六进制

c - 为什么在写入使用字符串初始化的 "char *s"时会出现段错误,而不是 "char s[]"?

c - c中字符数组结束后会发生什么?

javascript - 有没有办法在 JavaScript 超时后再次调用当前函数(及其参数)?

c - 如何在下一次递归调用时从二维数组中的下一列\行开始? (C)

c - 指向节点指针数组的指针

java - 如何回到之前的节点?

C编程Listnode插入节点导致无限循环

c - 为什么我的节点的 String 成员在创建后会打印一个空行?

c - 具有不同定义的类型转换结构