免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1155 | 回复: 2
打印 上一主题 下一主题

段错误,该怎么改呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-17 16:32 |只看该作者 |倒序浏览
//小弟想用getfenum,得到某一行中不是0的数字的值的数组contextnum,该如何改呢 ?刚得到第一个值就段错误了
#include<stdio.h>;
main()
{ int num;
int *p;
int contextnum[11];

int fe[13][11]= {{3,0,0,0,0,0,0,0,0,0,4},
{3,0,0,0,0,0,0,0,0,0,4},
{3,0,0,0,0,0,0,0,0,0,4},
{0,0,0,0,0,0,0,0,0,0,3},
{0,0,0,0,0,0,0,0,0,0,3},
{0,0,0,0,0,0,0,0,0,0,3},
{0,0,0,0,0,0,0,0,0,0,3},
{0,0,0,0,0,0,0,0,0,0,3},
{0,0,0,0,0,0,0,0,0,0,3},
{0,3,4,0,7,0,0,5,6,0,8},
{0,0,0,0,3,0,0,0,0,4,5},
{0,3,5,0,0,4,0,0,0,0,6},
{0,3,5,0,0,4,6,0,0,0,7}};
p = fe[0];
char out_put_name[10]="aa";
char *filename[13] = {"aa","bb","cc","dd","ee","ff","gg","hh","ii","jj","kk","ll","mm"};//用来确定某一行,行下标m

num=getfenum(p,out_put_name,filename);//应该是 3
printf("%d\n",num);
}

//得到fe[m][n]的值
int getfenum(int **p,char *out_put_name,char **filename) {
int i,j,m,n;
for(i = 0;i < 13;i++) {
if(strcmp(out_put_name,filename) == 0){
m = i;
break;
}
}
printf("%d\n",m);//得到行下标m
for(j = 0;j < 11;j++) {
if(p[m][j] != 0) {//想确定列的下标n,却发生段错误,就在这句
n = j;

}
}
return (p[m][n]);//返回第一行第一个数值,应该是3
}

论坛徽章:
0
2 [报告]
发表于 2004-06-17 20:22 |只看该作者

段错误,该怎么改呢?

大哥你这是什么程序啊?
1.编译通不过
2.if(p[m][j] != 0) {//想确定列的下标n,却发生段错误,就在这句
n = j;
    //这里应该break啊
}
3.不明白你的getfenum到底要干什么(获取某一列中第一个不为0的???)

论坛徽章:
0
3 [报告]
发表于 2004-06-21 12:57 |只看该作者

段错误,该怎么改呢?

int  fe[13][11]=  {{3,0,0,0,0,0,0,0,0,0,4},
                           {3,0,0,0,0,0,0,0,0,0,4},
                           {3,0,0,0,0,0,0,0,0,0,4},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,0,0,0,0,0,0,0,0,0,3},
                           {0,3,4,0,7,0,0,5,6,0,8},
                           {0,0,0,0,3,0,0,0,0,4,5},
                           {0,3,5,0,0,4,0,0,0,0,6},
                           {0,3,5,0,0,4,6,0,0,0,7}};
#include<stdio.h>;
main()
{       int num;
        int *p;
        p = fe[0];
        char out_put_name[10]={"bb"};
        char *filename[13] = {"aa","bb","cc","dd","ee","ff","gg","hh","ii","jj","kk","ll","mm"};
                                                                                                                                               
num=getfenum(p,out_put_name,filename);
printf("%d\n",num);
}
num=getfenum(p,out_put_name,filename);
printf("%d\n",num);
}
                                                                                                                                               
//得到fe[m][n]的值
int getfenum(char *p,char *out_put_name,char **filename) {
         int i,j,m,n;
        char getfenum_array[12];
        getfenum_array[0] = '\0';
        for(i = 0;i < 13;i++) {
                if(strcmp(out_put_name,filename) == 0){
                m = i;
                for(j = 0;j < 11;j++) {
                if(*(p+m*11+j) != 0) {
                n = j;
                //strcat(getfenum_array,);
                }
                }
//printf("*******%d\n",m);
                }
}
  return (*(p+m*11+n));
}
                                                                                                                                               
                                                                                                                                               
编译同过,为什么,得用偏移量来确定位置呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP