春天的故事那口虫txt:C编程:输入数据包括ID,姓名和性别并使用fgets读取输入数据

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 03:32:45
具体要求:
1,一次性输入ID,姓名和性别,中间用“;”分隔;
2,ID数据共7位,前两位必须为字母,后5位必须为数字;
3,性别只能输入男或者女;
4,程序要使用fgets(array name, max_input_size, stdin);

希望达人帮忙解答,最好能是完整的。谢谢!

刚注册,只有25点积分。
谢谢kingstarer的答案。但用fgets读取后,我可以试着读出每个“:”的具体位置。但分成几个不同Function去检查每个输入项是否正确的时候,一直出错。 希望有人也能给出这块的Code。 谢谢!

以前我做过类似的
当时我是定义了结构体
把ID,姓名定义成字符串型
性别定义成杖举型
(不过当时ID没有限制)
/*保存文件*/save(){FILE *fp;

if((fp=fopen("score.txt","wb"))==NULL)/*如果保存错误就退出或重试*/
{printf("xannot open the file student\n");printf("\ttry again?\n\t1:---yes\t0:---no\n");
for(kg=0,subject=-1;kg==0;)
{fflush(stdin);
scanf("%d",&subject);
if(subject==0){kg=1;exit(0);}
else if(subject==1){kg=1;readen();}
if(kg==0) printf("error input\n");}
}
for(i=1;i<leath;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("cant not write\n");
fclose(fp);
}

/*从文件中读取数组*/ readen(){
FILE *fp;
if((fp=fopen("score.txt","rb"))==NULL)
{printf("cannot open the file student\n");
printf("\ttry again?\n\t1:---yes\t0:---no\n");/*如果读取错误就退出或重试*/
for(kg=0,subject=-1;kg==0;)
{fflush(stdin);
scanf("%d",&subject);
if(subject==0){kg=1;exit(0);}
else if(subject==1){kg=1;readen();}
if(kg==0) printf("error input\n");}
}
for(leath=1;fread(&stu[leath],sizeof(struct student),1,fp)!=0;leath++);
fclose(fp);
printf("read %d students\n",leath);
}
这是我当时写的保存和读取的函数
希望有用

来学习学习。