После того, как вы выделите struct Name
, вы можете продолжить и выделить место для хранения копии самой строки:
if (name != NULL)
{
/* +1 for null terminator at end of string */
size_t string_length = strlen(inputedName) + 1;
name->string = calloc(string_length, 1);
Если это удастся, вы можете скопировать строку вВновь выделенное пространство (в случае сбоя необходимо освободить выделенное struct Name
):
if (name->string != NULL)
{
memcpy(name->string, inputedName, string_length);
}
else
{
free(name);
name = NULL;
}
У вас также есть ошибка в main()
.Name **name;
- указатель, но он еще никуда не указывает, поэтому вы не можете получить доступ к name[i]
.Ваш цикл for()
имеет доступ только с name[0]
до name[2]
, поэтому изменение определения на массив из трех Name *
указателей исправит это:
Name *name[3];