【问题标题】:Struct inside struct: char[] assignment [duplicate]结构内部的结构:char []分配[重复]
【发布时间】:2021-07-17 07:47:02
【问题描述】:

我在一个结构体中有一个结构体,如何将插入函数参数分配为名称元素的值

#include<stdlib.h>
#include<stdio.h>

typedef struct func{
    int matric;         
    char name[120];     
    char phone[80];     
    float sal;
}Func;

struct arv {
    Func* info;
    struct arv* esq;
    struct arv* dir;
};
typedef struct arv Arv;


void insert(Arv ** tree, char str[120])
{
    Arv *temp = NULL;
    if(!(*tree))
    {
        temp = (Arv *)malloc(sizeof(Arv));
        temp->esq = temp->dir = NULL;
        temp->info->name = str;
        *tree = temp;
        return;
    }
}

在 temp->info->name = str 中,我有错误:表达式必须是可修改的左值

【问题讨论】:

  • 请注意,由于 info 是一个 Func 指针,因此您还需要为 Func 分配空间。 temp-&gt;info = malloc(sizeof(Func)).
  • OT:(Arv *) 转换成 (Arv *)malloc(sizeof(Arv)) 是没用的,直接写 temp = malloc(sizeof(Arv)),或者更好的 temp = malloc(sizeof(*temp))

标签: c pointers struct


【解决方案1】:

c 中没有“数组赋值”这样的东西,您必须使用 string.h 中的 strcpy 之类的函数才能复制名称:

strcpy(temp->info->name, str);

另外,我建议将typedef struct arv Arv; 声明放在struct arv 之上,然后像这样定义它:

struct arv
{
    Func* info;
    Arv* esq;
    Arv* dir;
};

请注意,您没有为Func 分配内存,您很可能会遇到分段错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2021-12-03
    相关资源
    最近更新 更多