Записать рандомные имена в структуру: Segmentation fault - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно записать рандомные имена в структуру,но дает Segmentation fault.Что не так?
struct Client
{
    char name[10];
    char surname[30];
    char fatherName[30];
    char adress[30];
    char phone_number[30];
    char thing[30];
};
char names[5][10]={"Ваня","Дима","Саня","Вася"};
void initialize(struct Client *clients)
{int i,t;
    for ( i = 0; i < 3; ++i)
    {
        t=rand()%3;
        clients->name[10] = names[i][10];   
    }
 
}

Решение задачи: «Записать рандомные имена в структуру: Segmentation fault»

textual
Листинг программы
struct Client
{
    char *name;// здесь везде указатели
    char *surname;
    char *fatherName;
    char *adress;
    char *phone_number;
    char *thing;
};
char *names[] = { "Ваня","Дима","Саня","Вася" };//мас. указ.
void initialize(struct Client *clients)
{
    int i, t;
    for (i = 0; i < 4; ++i)//от нуля до трех включительно
    {
        t = rand() % 4;//и здесь, от нуля до трех включительно
        clients->name = names[t]; // здесь t
    }
}

Объяснение кода листинга программы

В данном коде объявлена структура Client, которая содержит в себе указатели на строки. Также объявлен массив указателей на строки names с четырьмя элементами. Функция initialize принимает указатель на структуру Client и инициализирует поля этой структуры случайным именем из массива names. В функции используется цикл for с диапазоном от 0 до 3, который выполняется четыре раза. Во время каждого прохода цикла, в переменной t генерируется случайное число от 0 до 3 с помощью функции rand(). Затем, указатель на имя в текущем клиенте (поле name) присваивается значению names[t]. Таким образом, каждое поле name в структуре Client будет случайно инициализировано одним из четырех возможных значений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5