Си. Как правильно вынести код ввода в отдельную функцию?
Как вынести код введения имени, фамилии... в отдельную функцию. При этом надо выделять память под строку. (В функцию передаётся структура из массива структур и для каждой структуры нужно заполнить имя, фамилия, отчество и всё с выделением памяти и проверкой на ввод)
void getFullName(struct student* s)
{
bool req = 0;
int length;
printf("Введите имя: ");
do
{
rewind(stdin);
(*s).name = (char*)malloc(LEN * sizeof(char));
req = 0;
fgets((*s).name, LEN, stdin); //Ввод имени
if (((s->name[0]) == '\n') || (s->name[0]) == ' ')
{
req = 1;
free((*s).name);
}
length = strlen((*s).name) - 1;
(*s).name[length] = '\0';
} while (req); //ввод имени с проверкой
printf("Введите фамилию: ");
do
{
rewind(stdin);
(*s).lastName = (char*)malloc(LEN * sizeof(char));
req = 0;
fgets((*s).lastName, LEN, stdin); //Ввод имени
if (((s->lastName[0]) == '\n') || (s->lastName[0]) == ' ')
{
req = 1;
free((*s).lastName);
}
length = strlen((*s).lastName) - 1;
(*s).lastName[length] = '\0';
} while (req); //фамилия
printf("Введите отчество: ");
do
{
rewind(stdin);
(*s).middleName = (char*)malloc(LEN * sizeof(char));
req = 0;
fgets((*s).middleName, LEN, stdin); //Ввод отчества
if (((s->middleName[0]) == '\n') || (s->middleName[0]) == ' ')
{
req = 1;
free((*s).middleName);
}
length = strlen((*s).middleName) - 1;
(*s).middleName[length] = '\0';
} while (req); //отчество
}