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

我在使用结构体数组的时候遇到这个问题,想了好长时间也没弄明白其中的原因,程序如下:

main()
{
struct abc
{
char name;
int a;
float b;
};
struct abc stu[3];
int i;
printf("please input:\n");
for(i=0;i<3;i++)
scanf("%c %d %f",&stu[i].name,&stu[i].a,&stu[i].b);
printf("you just input:\n");
for(i=0;i<3;i++)
printf("%-5c%-10d%-10.2f",stu[i].name,stu[i].a,stu[i].b);
}

这是一个试验程序,在给结构体数组赋值后就原样输出以验证赋值是否正确。但是程序执行时没有显示结果即退出。把结构体数组改成只有一个结构体变量,程序如下:

main()
{
struct abc
{
char name;
int a;
float b;
};
struct abc stu;
printf("please input:\n");
scanf("%c %d %f",&stu.name,&stu.a,&stu.b);
printf("%5c%10d%10.2f",stu.name,stu.a,stu.b);
}

编译执行,可以得到预期结果。我想验证是不是循环的问题,又将程序改成下面这样:不用求输入数据,而在程序内部给结构体变量数组赋初值,然后再用循环输出,程序如下:

main()
{
struct abc
{char name;
int a;
float b;
};
struct abc stu[3] = {{'a',12,34},{'b',56,78},{'c',90,12}};
int i;
for(i=0;i<3;i++)
printf("\n%-5c%-10d%-10.2f",stu[i].name,stu[i].a,stu[i].b);
}

编译执行,能够得到正确结果。最后确定只是在对结构体数组各元素成员以循环方式输入数值的时候出了问题,即第一个程序加粗的两行。但是我百思不得其解,不知究竟是什么原因。请大家帮忙解决一下。

搜索更多相关主题的帖子: 赋值 结构体 
2006-11-26 16:32
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
我把你的第一个代码编译了一下,可以输出的~
不过输出来的东西有点问题.......原因不明~~望高手来看看~
2006-11-26 16:56
hughyjy
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-6
收藏
得分:0 
补充:屏幕提示 floating point tormats not linked.
2006-11-26 17:33
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
你可以把scanf里面的%c改成%s就好用了~~至于为什么,我也不清楚~还需要高手来说明~~~
[QUOTE]main()
{
struct abc
{
char name;
int a;
float b;
};
struct abc stu[3];
int i;
printf("please input:\n");
for(i=0;i<3;i++)
scanf("%s %d %f",&stu[i].name,&stu[i].a,&stu[i].b);
printf("you just input:\n");
for(i=0;i<3;i++)
printf("%-5c%-10d%-10.2f",stu[i].name,stu[i].a,stu[i].b);
}[/QUOTE]
2006-11-26 18:15
hughyjy
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-6
收藏
得分:0 

不行啊,把scanf里的%c改成%s也不行啊

2006-11-26 18:39
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
我的编译器可以通过的,而且测试数据也没问题~~~~~
可能编译器有关的吧,我用的是MinGW~~~~
2006-11-26 19:02
hughyjy
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-6
收藏
得分:0 

是吗,我用的是win-tc,执行不了,用纯 turboc2也不行。麻烦你能把你用的编译器发给我么,谢谢,我的邮箱hughyjy@126.com.

2006-11-27 12:09
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
运行这个:

main()
{
struct abc
{
char name[10]; //应该为字符数组
int a;
float b;
};
struct abc stu[3];
int i;
printf(\"please input:\n\");
for(i=0;i<3;i++)
scanf(\"%s %d %f\",stu[i].name,&stu[i].a,&stu[i].b);
printf(\"you just input:\n\");
for(i=0;i<3;i++)
printf(\"%-5s%-10d%-10.2f\",stu[i].name,stu[i].a,stu[i].b);
}

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-27 12:22
hughyjy
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-6
收藏
得分:0 

我刚试了试,改成数组也不行啊。

2006-11-27 13:02
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

注意你的输入时的格式,用空格分隔每个数据项


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-27 13:16
快速回复:结构体数组赋值问题
数据加载中...
 
   



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

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