Подскажите, в чем ошибка? Инициализация строки - C (СИ)
Формулировка задачи:
Код:
Консоль:
Не понимаю в чем проблема. Пробовал и через malloc, все равно та же ошибка. Что нужно этому массиву?
Но мне теперь нужно кое-что уточнить.
1) Значит ли 11 строчка, что память выделяется под все переменные и массивы структуры person?
2) Почему в 14 строчке вывелось полностью слово? Я думал, что выведется только "P", а при person->name[1] - "e" и так далее.
Ведь поле name это массив символов, а не строк. Почему так?
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct person{ int age; char * name[]; }person_c; int main(int argc, char * argv[]) { person_c person; person.age = 1; person.name = "First Name"; }
eugene@eugenePC:~$ gcc prog.c prog.c: In function ‘main’: prog.c:13:2: error: invalid use of flexible array member person.name = "First Name"; ^
Причем сама ошибка не многословная
Вот так заработало:
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct person{ int age; char * name[]; }person_c; int main(int argc, char * argv[]) { person_c * person = malloc(sizeof(person)); person->age = 1; person->name[0] = "Person"; printf("Person`s name: %s\n", person->name[0]); }
Решение задачи: «Подскажите, в чем ошибка? Инициализация строки»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <conio.h> typedef struct person{ int age; char name[100]; }person_c; int main(int argc, char * argv[]) { person_c p; p.age = 1; strcpy(p.name, "Person"); printf("Person`s name: %s\n", p.name); getch(); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с памятью и строками.
- Объявляем структуру person_c, которая содержит два поля: int age и char name[100].
- Задаем значение возрасту структуры person_c равным 1.
- Используя функцию strcpy, копируем строку
Person
в поле name структуры person_c. - Выводим на экран содержимое поля name структуры person_c.
- Ждем нажатия клавиши и выходим из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д