我必须按以下顺序写结构信息:
输入:[姓名],[姓氏],[索引]
输出:[名称] [姓氏],[索引]
在输入中,每个单词都必须用逗号和空格分隔,但在输出中,只有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);
}
}
}
}
}
我还必须设置err_code的值:
0成功,
1-输入中没有指向结构的指针或逗号,
仅2个名称已正确加载,
仅3个姓名和姓氏已正确加载。