| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2927 人关注过本帖
标题:还是昨天的问题 今天老是弹出段溢出,非法指针访问
只看楼主 加入收藏
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
还是昨天的问题 今天老是弹出段溢出,非法指针访问
段错误,也就是segmentfault, 可能您的代码出现栈溢出或非法指针访问。

代码如下
#include<stdio.h>
struct stu
{
  int x,y,z;
  char name[9];
};
struct stu student[9];
main()
 {
   int a,j;
  int m=0,n=260,c,d;
   int s[9];
  int max[8],min[8];
   while(1)
   {
     scanf("%d",&a);
     if(a==(-1)){break;}
     else for(j=0;j<a;j++)
     {
       scanf("%d %d %d %s",&student[j].x,&student[j].y,&student[j].z,&student[j].name[9]);
        s[j]=student[j].x*student[j].y*student[j].z;
        if(s[j]> m){m=s[j];c=j;/*max[8]=student[c].name[8];*/}
        if(s[j]< n){n=s[j];d=j;/*min[8]=student[d].name[8];*/}
     }
      printf("%s took clay from %s\n",student[c].name[9],student[d].name[9]);
   }
}
搜索更多相关主题的帖子: include 
2016-09-18 16:26
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:10 
student[j].name[9]这种方式表达字符串是不正确的,这只能代表一个字符
正确方式应是student[j].name
2016-09-18 16:32
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 2楼 ehszt
谢谢了 完美解决

穷举是最暴力的美学
2016-09-18 16:33
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 楼主 nosnoy
问题解决了 但是这样的不是只代表一个首地址嘛

穷举是最暴力的美学
2016-09-18 16:36
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 4楼 nosnoy
对,就是用字符串的首地址表示字符串。告诉程序从这里来读或写入到这里。
2016-09-18 17:43
快速回复:还是昨天的问题 今天老是弹出段溢出,非法指针访问
数据加载中...
 
   



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

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