char数组的输出值把第二个char输入值也弄进去了,应该怎么解决,麻烦各位了
图一是结构体定义
图二是输入定义
图三是输入值
图四是输出值
定义字符串数组时,一定要多增加一个字节的字符串结束标志“\0”,你定义了编号长度为5,那么你只能输入四位数的编号,输入五位编号就把姓名当中的首地址存储了“\0”,当你显示时,因为没有结束标志,所以会那样显示,如果输入四位编号没问题,如果把编号数组的长度改为6也没问题
scanf中字符串变量不需要加&
数组设置小了,char num[5],最多容纳4个字符,最后一个留给字符串末尾'\0'
1.首先输出字符串数组时,格式化输出的%s是根据字符串结束标志“\0”来决定输出结束的,定义的长度为5,那就没有留下空位存放\0;
2.然后在结构中这些地址的存放位置都是连续的,后面读入的%s有“\0”,所以就在后面一个字符串的结束处终止输出了。
所以并不是你多读入了,而是多输出了,数组开大一点就好了。