如何使用指针为c中的结构添加多个值?

时间:2018-10-15 14:09:06

标签: c arrays pointers

我不知道如何使用指针为C中的结构添加多个值。这是我的代码,gcc错误是:

  

错误:分配给数组类型为(p+0)->name = "Teszt";的表达式

#include <stdio.h>

typedef struct{
    char name[101];
    int born_in;
} paciens;

int main(){
    paciens *p;
    int n = 5;
    p = (paciens*) malloc(n * sizeof(paciens));

    (p+0)->name = "Test";
    (p+0)->born_in = 1992;

    printf("Name: %s ; Born in: %d\n", (p+0)->name, (p+0)->born_in);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您不能分配给数组,但可以分配给包含数组的struct

p[0] = (paciens) { .name = "Test", .born_in = 1992};

将执行此操作。这称为复合文字。

https://ideone.com/f99rUF

还请注意,您为#include <stdlib.h>忘记了malloc

答案 1 :(得分:0)

成员name是一个数组。您不能分配给数组,只能复制到该数组。要复制字符串,请使用strcpy

strcpy(p[0].name, "Test");

任何好书,教程或老师都应该提到这一点。