Записать рандомные имена в структуру: Segmentation fault - C (СИ)
Формулировка задачи:
- 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»
- 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
будет случайно инициализировано одним из четырех возможных значений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д