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