结构体赋初值问题
我在学c语言的结构体一章,看了小甲鱼老师的视频后自己写了一个通讯录的小程序,但是在结构体数组的赋值时,两段相同的代码,只是数组长度不同,导致结果就不一样,哪位高手可以帮我看看是为什么?#include <stdio.h>
void main()
{
struct book
{
char name;
char tel;
};
int i;
struct book person;
for(i=0;i<3;i++)
{
printf("input person %d name \n",i+1);
gets(person.name);
printf("input person %d tel \n",i+1);
gets(person.tel);
}
printf("\t\tname\t\ttelephone\n");
for(i=0;i<3;i++)
{
printf("\t%s\t\t%s\n",person.name,person.tel);
}
}
结果
如果把char tel的长度改为char tel,结果就是
我定义的数组长度小为什么输出tel后还加上了name,定义长了反而没有了呢。求助各位,谢谢啦!
晕了,少上传了一张图,当char tel时,结果是这样的
name telephone
wang 13911112222li
li 12822223333zhou
zhou 13588880000
不能上传图片了,只好打字了
不要用gets获取键盘输入,容易溢出,用fgets代替 谢谢了,主要是我搞不懂为什么会是这个结果 本帖最后由 vividzheng10010 于 2015-12-14 10:40 编辑
因为字符串会有结束符('\0');所以定义char tel长度为12
手机号11位+'\0' 谢谢啦!
页:
[1]