Привет, я пишу простую программу на C с использованием «struct». Я пытаюсь добавить строки (что всегда кажется проблемой), и я наконец могу скомпилировать, но когда я запускаю его, я получаю сообщение об ошибке. Имя файла - «структура», это ошибка:
*** stack smashing detected *** ./struct terminated
Aborted (core dumped)
Вот код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct members {
int id;
int age;
char name[];
};
int main(void)
{
struct members person;
person.id = 1223;
person.age = 37;
strcpy(person.name, "Matthew");
printf("ID: %d\n Age: %d\n Name: %s\n", person.id, person.age, person.name);
return 0;
}
Я понятия не имею, почему он компилируется нормально, а затем падает. Я предполагаю, что это проблема памяти с кодом по отношению к строке. Забавно то, что он действительно работает и выводит информацию на консоль, а затем вылетает. Любая помощь приветствуется. Спасибо.
char name[]
похоже на выполнениеconst char *
, вы должны просто назначить ему напрямую, напримерperson.name = "Matthew"
- person Ryan   schedule 01.02.2016