用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/