| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:结构体的问题
只看楼主 加入收藏
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
 问题点数:0 回复次数:3 
结构体的问题

刚学习了结构体,想了一个程序编写后后发现出现问题了,程序的功能是:输入用户数量,名称,年龄,性别,出生日期,最后是输入用户信息
问题在输入后显示信息的不符合输入的

#define NUM 20
#include <conio.h>

struct date
{ int year;
int month;
int day;
};

struct info
{ char name[20],sex[10];
int age;
struct date bir;
};

struct info user[NUM];
int n;

void get_info(void)
{int i;
printf("Input the user amout:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("Input the name of user No.%d:",i+1);
scanf("%s",user[i].name);
printf("Input the user sex:");
scanf("%s",user[i].sex);
printf("Input the user age:");
scanf("%d",&user[i].age);
printf("Input the birthday of user like this year-month-day :");
scanf("%d-%d-%d",&user[i].bir.year,&user[i].bir.month,&user[i].bir.day);
}

}

main()
{
void get_info(void);
void show_info(void);
get_info();/*输入信息*/
show_info();/*输出信息*/
getch();
}

void show_info(void)
{int i;
clrscr();
for(i=0;i<n;i++)
{int i;
printf("\n The No.%d user\n Name:%s\n sex:%s\n age:%d\n Birthday:%d-%d-%d\n",i+1,user[i].name,user[i].sex,user[i].age,user[i].bir.year,user[i].bir.month,user[i].bir.day);
printf("---------------------------------");
}
}

搜索更多相关主题的帖子: 结构体 
2007-03-01 17:33
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
void show_info(void)
{int i;
clrscr();
for(i=0;i<n;i++)
{int i;
printf("\n The No.%d user\n Name:%s\n sex:%s\n age:%d\n Birthday:%d-%d-%d\n",i+1,user[i].name,user[i].sex,user[i].age,user[i].bir.year,user[i].bir.month,user[i].bir.day);
printf("---------------------------------");
}
}
终于找到错误了,注意上面红色的语句,你在for循环内部又多定义了一个局部变量i.并且没有给它负值.
所以你后面访问的的i都是一个随机值,因为没定义,运行到这就要出错.

把红色语句去掉就可以啦

[此贴子已经被作者于2007-3-1 19:14:35编辑过]

2007-03-01 19:14
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 
以下是引用田里兵蜂在2007-3-1 19:14:10的发言:
void show_info(void)
{int i;
clrscr();
for(i=0;i<n;i++)
{int i;
printf("\n The No.%d user\n Name:%s\n sex:%s\n age:%d\n Birthday:%d-%d-%d\n",i+1,user[i].name,user[i].sex,user[i].age,user[i].bir.year,user[i].bir.month,user[i].bir.day);
printf("---------------------------------");
}
}
终于找到错误了,注意上面红色的语句,你在for循环内部又多定义了一个局部变量i.并且没有给它负值.
所以你后面访问的的i都是一个随机值,因为没定义,运行到这就要出错.

把红色语句去掉就可以啦

哦,原来是这个我检查的时候见不到上面的已经定义了。。。谢谢你了

2007-03-01 20:01
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
循环语句中的i是个局部定义它与循环变量无关了.况且又没有定义值,所以有乱码,越界问题.

倚天照海花无数,流水高山心自知。
2007-03-02 12:08
快速回复:结构体的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023180 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved