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

main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102;
boy1.name="Zhang ping";/这语句对不对啊/还是 strcpy(boy1.name,"Zhang Ping);
printf("input sex and score\n");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}

[此贴子已经被作者于2006-10-2 21:07:43编辑过]

搜索更多相关主题的帖子: 赋值 ping 结构 
2006-10-02 21:04
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
你那个是对的.
strcpy(boy1.name,"Zhang Ping);是错的

2006-10-02 22:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
除非是在定义的时候可以这样用,否则就是用strcpy();

倚天照海花无数,流水高山心自知。
2006-10-02 22:32
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
以下是引用nuciewth在2006-10-2 22:32:10的发言:
除非是在定义的时候可以这样用,否则就是用strcpy();

char *string="hello";
等价于下面两行:
char *string;

string="hello";

所以楼主的是正确的.



boy1.name是指针,不是数组,并未分配空间,用strcpy()就是错误的.


2006-10-03 00:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<string.h>
int main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102; strcpy(boy1.name,"Zhang Ping");
//boy1.name="Zhang ping";//这语句对不对啊/还是
printf("input sex and score\n");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
return(0);
}
/*我编译是通过的,得到的也是正确的,当然测试直接赋值时也是正确的,在分配空间方面,不管用哪个都是需要分配空间的.
的确在没有分配空间之前用strcpy是错误的,所以我认为不管用哪种方法,都得给结构体变量分配空间*/


倚天照海花无数,流水高山心自知。
2006-10-03 12:12
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
以下是引用nuciewth在2006-10-3 12:12:29的发言:

#include<stdio.h>
#include<string.h>
int main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102; strcpy(boy1.name,"Zhang Ping");
//boy1.name="Zhang ping";//这语句对不对啊/还是
printf("input sex and score\n");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
return(0);
}
/*我编译是通过的,得到的也是正确的,当然测试直接赋值时也是正确的,在分配空间方面,不管用哪个都是需要分配空间的.
的确在没有分配空间之前用strcpy是错误的,所以我认为不管用哪种方法,都得给结构体变量分配空间*/

编译通过,并不代表能运行.在我的机子上编译给出一个警告,但就不能运行.

boy1.name为野指针.它指向什么地方并不知道.


2006-10-03 14:48
快速回复:结构题赋值问题,谢谢啊
数据加载中...
 
   



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

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