24小时热门版块排行榜    

查看: 861  |  回复: 1

13659938271

铁虫 (初入文坛)

[求助] 这个是gdb调试错误代表什么意思 已有1人参与

Program received signal SIGSEGV, Segmentation fault.
0x00684867 in __strcmp_sse4_2 () from /lib/libc.so.6
上面这句是什么意思


程序如下:
再没有调用add_specie的时候可以运行,但是一旦调用就出现了段错误


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_LINE 500                  
#define MAX_REACTIONS 6046
#define MAX_SPECIES 5000            
#define MAX_CHAR_SPECIES 32  




     







void add_specie (char *new_specie, char *species[],int *n_species)
{
        int i;

     
        if (strcmp (new_specie, "") == 0)
                return;
        for (i = 0; i < *n_species; i++)
        {
                if (strcmp (species, new_specie) == 0)
                        return;
        }
        i = *n_species;
        if (i < MAX_SPECIES )
        {
                if (strlen (new_specie) < MAX_CHAR_SPECIES - 1)
                {
                        strcpy (species, new_specie);
                        (*n_species)++;
                }
               
                       
       
        }

  
        return;
}



int main()
{   
//struct react reactions[MAX_REACTIONS];
const char *osu2009;
FILE *f;                 
char line[MAX_LINE];
int line_number=0;
char reactant1[MAX_CHAR_SPECIES];
char reactant2[MAX_CHAR_SPECIES];
char reactant3[MAX_CHAR_SPECIES];
char product1[MAX_CHAR_SPECIES];
char product2[MAX_CHAR_SPECIES];
char product3[MAX_CHAR_SPECIES];
char product4[MAX_CHAR_SPECIES];
double alpha;
double beta;
double gamma;
int reaction_type;
int reaction_no;
char *species[MAX_SPECIES];
int *n_species;

if((f=fopen("osu2009.chm","r"))==NULL)
{
printf("can not open\n");
exit(0);
}

while(fgets(line,MAX_LINE,f)!=NULL)
{
line_number++;

if (line[0]=='#') continue;

                strcpy (reactant1, "");
                strcpy (reactant2, "");
                strcpy (reactant3, "");
                strcpy (product1, "");
                strcpy (product2, "");
                strcpy (product3, "");
                strcpy (product4, "");
                alpha = 0;
                beta = 0;
                gamma = 0;
                reaction_type = 0;    //付初始值
                reaction_no = 0;


     
if ((sscanf (line, "%s -> %s %lf %lf %lf %d %d",reactant1, product1, &alpha, &beta, &gamma, &reaction_type, &reaction_no) == 7)
           
               ||(sscanf (line, "%s + %s -> %s + %s %lf %lf %lf %d %d",reactant1, reactant2, product1, product2,&alpha, &beta, &gamma, &reaction_type, &reaction_no) == 9)

               ||(sscanf (line, "%s + %s -> %s %lf %lf %lf %d %d",reactant1, reactant2, product1, &alpha, &beta, &gamma, &reaction_type, &reaction_no) == 8)

               ||(sscanf (line, "%s + %s -> %s + %s + %s %lf %lf %lf %d %d",reactant1, reactant2, product1, product2, product3,&alpha, &beta, &gamma, &reaction_type, &reaction_no) == 10)
  
                     || (sscanf (line, "%s + %s -> %s + %s + %s + %s %lf %lf %lf %d %d",reactant1, reactant2, product1, product2, product3,product4,&alpha, &beta, &gamma, &reaction_type, &reaction_no) == 11)
                     ||(sscanf (line, "%s + %s + %s -> %s + %s %lf %lf %lf %d %d",reactant1, reactant2, reactant3, product1, product2,&alpha, &beta, &gamma, &reaction_type, &reaction_no) == 10));



            if ((strcmp (reactant1, "cosmic-ray") == 0)
                        || (strcmp (reactant1, "uv-photon") == 0)
                        || (strcmp (reactant1, "photon") == 0))
                {
                        strcpy (reactant1, reactant2);
                        strcpy (reactant2, reactant3);
                        strcpy (reactant3, "");
                }
                if ((strcmp (reactant2, "cosmic-ray") == 0)
                        || (strcmp (reactant2, "uv-photon") == 0)
                        || (strcmp (reactant2, "photon") == 0))
                {
                        strcpy (reactant2, reactant3);
                        strcpy (reactant3, "");
                }
                if ((strcmp (reactant3, "cosmic-ray") == 0)
                        || (strcmp (reactant3, "uv-photon") == 0)
                        || (strcmp (reactant3, "photon") == 0))
                {
                        strcpy (reactant3, "");
                }
if ((strcmp (product1, "cosmic-ray") == 0)
                        ||(strcmp (product1, "uv-photon") == 0)
                        || (strcmp (product1, "photon") == 0))
                {
                        strcpy (product1, product2);
                        strcpy (product2, product3);
                  strcpy (product3, product4);
                        strcpy (product4, "");
                }
                if ((strcmp (product2, "cosmic-ray") == 0)
                        || (strcmp (product2, "uv-photon") == 0)
                        || (strcmp (product2, "photon") == 0))
                {
                        strcpy (product2, product3);
                  strcpy (product3, product4);
                        strcpy (product4, "");
                }
                if ((strcmp (product3, "cosmic-ray") == 0)
                        || (strcmp (product3, "uv-photon") == 0)
                        || (strcmp (product3, "photon") == 0))
                {
                  strcpy (product3, product4);
                        strcpy (product4, "");
                }
                if ((strcmp (product4, "cosmic-ray") == 0)
                        || (strcmp (product4, "uv-photon") == 0)
                        || (strcmp (product4, "photon") == 0))
                {
                        strcpy (product4, "");
                }


                add_specie (reactant1, species, n_species);
                add_specie (reactant2, species, n_species);
                add_specie (reactant3, species, n_species);
                add_specie (product1, species, n_species);
                add_specie (product2, species, n_species);
                add_specie (product3, species, n_species);
                add_specie (product4, species, n_species);


              //     printf("reactant1:%s  reactant2:%s  reactant3:%s  product1:%s  product2:%s  product3:%s  product4:%s  alpha:%.2e  beta:%.2e  gamma:%e  reaction_type:%d  reaction_no: %d\n",reactant1,reactant2,reactant3,product1,product2,product3,product4,alpha,beta,gamma,reaction_type,reaction_no);



}

               
fclose(f);
return 0;
}
回复此楼

» 猜你喜欢

选择性所得税
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzy滴号

金虫 (小有名气)

【答案】应助回帖

void add_specie (char *new_specie, char *species[],int *n_species)中的参数species是一个指针数组,而new_specie是一个指针。调用add_specie处传入的参数类型不符,而且二者在 if (strcmp (species, new_specie) == 0)不正确的使用,把[]去掉试一试。
天道酬勤
2楼2015-08-08 08:45:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 13659938271 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今年也是没消息就是没中么 +5 vito刘 2026-06-13 9/450 2026-06-14 11:31 by newfuzzy1
[论文投稿] 买卖文章的刷屏了! +3 能丫 2026-06-13 3/150 2026-06-14 09:20 by bobvan
[考研] *O_o^ +3 jk31rb6vyz 2026-06-12 3/150 2026-06-14 09:08 by 8bmv3h4hvh
[论文投稿] ⊙▽⊙ +3 m584r2z4j3 2026-06-11 3/150 2026-06-14 08:46 by 8bmv3h4hvh
[硕博家园] T^T +7 m584r2z4j3 2026-06-11 8/400 2026-06-14 08:34 by 8bmv3h4hvh
[考博] →_→ +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-14 08:28 by 8bmv3h4hvh
[公派出国] T^T +6 q1zg6x4lf3 2026-06-12 6/300 2026-06-14 08:28 by 8bmv3h4hvh
[考研] O(∩_∩)O +4 q1zg6x4lf3 2026-06-12 5/250 2026-06-14 08:23 by 8bmv3h4hvh
[公派出国] π_π +5 m584r2z4j3 2026-06-11 5/250 2026-06-14 08:08 by 8bmv3h4hvh
[考博] T^T +4 m584r2z4j3 2026-06-11 4/200 2026-06-14 08:08 by 8bmv3h4hvh
[考研] ╭(╯ε╰)╮ +5 m584r2z4j3 2026-06-11 5/250 2026-06-14 08:03 by 8bmv3h4hvh
[基金申请] 函评 +3 布布和一二 2026-06-13 3/150 2026-06-13 23:35 by 芋圆香飘飘
[找工作] 售SCI文章,我:8.O.5.51O.5.4,科目齐全,可十急 +3 q1zg6x4lf3 2026-06-12 3/150 2026-06-13 19:07 by 1js5n6upxm
[公派出国] +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-13 19:05 by 1js5n6upxm
[考研] T^T +6 m584r2z4j3 2026-06-11 6/300 2026-06-13 18:29 by lkmi35jdzt
[考博] π_π +4 m584r2z4j3 2026-06-11 4/200 2026-06-13 18:25 by lkmi35jdzt
[考博] T^T +4 jk31rb6vyz 2026-06-12 4/200 2026-06-13 12:09 by 80j16ujcu8
[基金申请] 前几天时间戳更新了 +8 vito刘 2026-06-11 13/650 2026-06-12 14:17 by BlakeReary
[教师之家] AASSDDFF +3 m584r2z4j3 2026-06-11 3/150 2026-06-12 11:28 by zs48m4lz8g
[考博] 博士申请 +3 张城斐 2026-06-07 3/150 2026-06-08 09:15 by A大朋同学
信息提示
请填处理意见