Мне нужно написать для структурирования информации в следующем порядке:
Ввод: [Имя], [Фамилия], [Индекс]
Вывод: [Имя] [Фамилия], [Индекс]
При вводе каждое слово должно быть разделено запятой и пробелом, но при выводе только SURNAME и INDEX должны быть разделены запятой.Я уже сделал это, и он работает нормально, но с дополнительным массивом, но теперь я должен сделать это без использования дополнительных массивов или выделения памяти.
Вот что я сделал:
struct student_t
{
char name[20];
char surname[40];
int index;
};
int main(int argc, char *argv[]) {
struct student_t dl;
int err;
if (read(&dl, &err)==NULL)
{
printf("Incorrect input");
return 1;
}
show(&dl);
return 0;
}
struct student_t* read(struct student_t* p, int *err_code)
{
char arr[500];
if (fgets(arr, 500, stdin)){
char *name=strtok(arr, ",");
if (name){
sscanf(name, " %19s", p->name);
char *surname=strtok(NULL, ",");
if (surname){
sscanf(surname, " %39s", p->surname);
char *index=strtok(NULL, ",");
if (index){
p->index=(int)strtol(index, NULL, 10);
}
}
}
}
}
Iтакже необходимо установить значение err_code:
0-success,
1-нет указателя на структуру или нет запятых на входе,
имя только для 2 загружено правильно,
имя и фамилия только для 3загружены правильно.