1,因为你上面输完年月日后有一个回车换行符,而scanf不会去拿这个符号,所以下面的work就拿了这个符号。所以它以为你给work赋值的就是这个符号已输完。所以就直接跳到了下一句job去了。
2,你这个不越界吗?DATA stu[1]; 这个DATA型数组里只有一个变量,那访问stu[1]不越界吗。直接将main中所有的stu[1]换成stu。
3,你这个键盘输入不规范哦,比如年月日 你那里要求是空格,但你用的回车换行哦。还有输入性别那一栏要求前面要有空格,但你也没有按自己定的要求输入空格。
1.当你通过键盘向scanf输入变量值的时候,最后回按下回车键。scanf是不会读取这个回车键,“input the work”遇到这个回车键则认为已经读取到数据就直接跳过。
解决方法:在scanf的下一行添加getchar(),getchar会将该回车键读取出来。
2. DATA stu[1]; 表示该数组只有一个元素,使用时stu[1]表示stu数组中第二个元素,这个会越界。
解决方法1:使用时将stu[1]替换为stu[0]
解决方法2:定义DATA stu;