| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 788 人关注过本帖, 1 人收藏
标题:很简单的结构体程序,麻烦看看这个程序错在哪
取消只看楼主 加入收藏
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
结帖率:77.78%
收藏(1)
已结贴  问题点数:5 回复次数:7 
很简单的结构体程序,麻烦看看这个程序错在哪
很久没有写c的程序了,拿个结构体来练练手 没想到编译虽然通过 但是执行报错:Segmentation fault

[view@localhost c]$cat s.c
#include<stdio.h>
typedef struct man{
        char *name;
        int age;
        char phone[12];
        }* pMAN;

int main(){
pMAN a;
strcpy(a->name,"hwt");
a->age=34;
strcpy(a->phone,"18677151934");
printf("a man named %s's age is %s,and phone is %s\n",a->name,a->age,a->phone);
exit(0);
}
[view@localhost c]$cc -o s s.c
[view@localhost c]$./s
Segmentation fault
搜索更多相关主题的帖子: 结构体 
2011-04-21 23:45
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
printf("a man named %s's age is %d,and phone is %s\n",a->name,a->age,a->phone);

这里改了,不过结果还是一样的报错。
2011-04-21 23:54
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
自己改好了:
[view@localhost c]$cat s.c
#include<stdio.h>
typedef struct man{
        char name[10];
        int age;
        char phone[12];
        }* pMAN;

int main(){
pMAN a=(pMAN)malloc(sizeof(pMAN));
strcpy(a->name,"hwt");
a->age=34;
strcpy(a->phone,"18677151934");
printf("a man named %s's age is %d,and phone is %s\n",a->name,a->age,a->phone);
exit(0);
}
[view@localhost c]$cc -o s s.c
[view@localhost c]$./s
a man named hwt's age is 34,and phone is 18677151934
2011-04-22 00:03
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
谢谢楼上的,那个char *name我改成name[10]才通过
2011-04-22 00:09
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
exit(0)没事的。我试过了。
2011-04-22 00:10
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
以下是引用voidx在2011-4-22 00:09:54的发言:

pMAN a=(pMAN)malloc(sizeof(pMAN));    // 这个还是错的,而且要给 name 也分配空间,不然你定义个数组试试,肯定乱套
这里声明已经改成name[10]了
2011-04-22 00:11
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
一个是实例 一个是指针 大小不一样感觉很正常。
不过确实2个的时候有问题
[view@localhost c]$cat ss.c
#include<stdio.h>
typedef struct man{
        char name[10];
        int age;
        char phone[12];
}* pMAN;

int main(){
    pMAN a=(pMAN)malloc(sizeof(pMAN)), b = (pMAN)malloc(sizeof(pMAN));
    strcpy(a->name,"hwt");
    a->age=34;
    strcpy(a->phone,"18677151934");
    strcpy(b->name,"hwt");
    b->age=34;
    strcpy(b->phone,"18677151934");
    printf("a man named %s's age is %d,and phone is %s\n",a->name,a->age,a->phone);
    printf("a man named %s's age is %d,and phone is %s\n",b->name,b->age,b->phone);
    exit(0);
}
[view@localhost c]$cc -o ss ss.c
[view@localhost c]$./ss
a man named hwt's age is 34,and phone is hwt
a man named hwt's age is 34,and phone is 18677151934
2011-04-22 00:36
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
收藏
得分:0 
谢谢  明白了
2011-04-22 13:49
快速回复:很简单的结构体程序,麻烦看看这个程序错在哪
数据加载中...
 
   



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

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