Как добавить несколько значений для структуры с помощью указателя? - PullRequest
0 голосов
/ 15 октября 2018

Я не знаю, как добавить несколько значений для структуры в 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 голосов
/ 15 октября 2018

Вы не можете присвоить массиву, но вы можете присвоить struct, который содержит массив:

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

сделает это.Это называется составным литералом.

https://ideone.com/f99rUF

Также обратите внимание, что вы забыли #include <stdlib.h> для malloc.

0 голосов
/ 15 октября 2018

Член name является массивом.Вы не можете присвоить массиву, только скопировать в него.Чтобы скопировать строку, используйте strcpy:

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

Любая хорошая книга, учебник или учитель должны упомянуть об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...