Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的地址越界_C - Fatal编程技术网

C语言中的地址越界

C语言中的地址越界,c,C,我正在制作一个使用索引操作文件的程序,但当我尝试调试我的一个函数时,遇到了一个阻碍我的问题:“地址0x6超出界限”。我真的在网上搜索过,也在这里搜索过StackOverflow,我发现了类似的问题,但没有一个能帮我解决问题。代码非常长(约2300行),因此我只需将生成错误的代码放在前面(我不确定这一点,但至少之前没有发生任何事情) 这是consultRMA的函数 int consultRMA(LnOVC *f, char region[MAX_REG_MILIT], int bIAge,

我正在制作一个使用索引操作文件的程序,但当我尝试调试我的一个函数时,遇到了一个阻碍我的问题:“地址0x6超出界限”。我真的在网上搜索过,也在这里搜索过StackOverflow,我发现了类似的问题,但没有一个能帮我解决问题。代码非常长(约2300行),因此我只需将生成错误的代码放在前面(我不确定这一点,但至少之前没有发生任何事情)

这是consultRMA的函数

    int consultRMA(LnOVC *f, char region[MAX_REG_MILIT], int bIAge, int bSAge, indexSecondRegMilit tab[6], tabIndxAge IndxAge, index_primaire tabPrm[])
/** consulter tout les enregistrement relatifs a une region militaire region ayant un age entre deux valeurs bIAge et bSAge (resp.)*/
{
    int i, m = 0,n, k, r;
    if (strcmp(region, "1RM-Blida") == 0)
    {
        for(i = 0; i < tab[0].nbMatric; i++)
        {
            if(tab[0].tab[i].suppr == 0)
            {
                for(m = 0; m < IndxAge.taille; m++)
                {
                    if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                    {
                        for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                        {
                            if(IndxAge.tab[m].tab[n].matricule == tab[0].tab[i].matricule)
                            {
                                k = rechIndexPrim(tab[0].tab[i].matricule, tabPrm, *f);
                                if(k != -1)
                                {
                                    r = tabPrm[k].pos;
                                    afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                }
                            }
                        }
                    }
                }
            }
        }
    }else if (strcmp(region, "2RM-Oran") == 0)
         {
            for(i = 0; i < tab[1].nbMatric; i++)
            {
                if(tab[1].tab[i].suppr == 0)
                {
                    for(m = 0; m < IndxAge.taille; m++)
                    {
                        if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                        {
                            for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                            {
                                if(IndxAge.tab[m].tab[n].matricule == tab[1].tab[i].matricule)
                                {
                                    k = rechIndexPrim(tab[1].tab[i].matricule, tabPrm, *f);
                                    if(k != -1)
                                    {
                                        r = tabPrm[k].pos;
                                        afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }else if (strcmp(region, "3RM-Bechar") == 0)
            {
                for(i = 0; i < tab[2].nbMatric; i++)
                {
                    if(tab[2].tab[i].suppr == 0)
                    {
                        for(m = 0; m < IndxAge.taille; m++)
                        {
                            if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                            {
                                for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                                {
                                    if(IndxAge.tab[m].tab[n].matricule == tab[2].tab[i].matricule)
                                    {
                                        k = rechIndexPrim(tab[2].tab[i].matricule, tabPrm, *f);
                                        if(k != -1)
                                        {
                                            r = tabPrm[k].pos;
                                            afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }else if (strcmp(region, "4RM-Ouargla") == 0)
            {
                    for(i = 0; i < tab[3].nbMatric; i++)
                        {
                            if(tab[3].tab[i].suppr == 0)
                            {
                                for(m = 0; m < IndxAge.taille; m++)
                                {
                                    if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                                    {
                                        for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                                        {
                                            if(IndxAge.tab[m].tab[n].matricule == tab[3].tab[i].matricule)
                                            {
                                                k = rechIndexPrim(tab[3].tab[i].matricule, tabPrm, *f);
                                                if(k != -1)
                                                {
                                                    r = tabPrm[k].pos;
                                                    afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }else if (strcmp(region, "5RM-Constantine") == 0)
                        {
                    for(i = 0; i < tab[4].nbMatric; i++)
                    {
                        if(tab[4].tab[i].suppr == 0)
                        {
                            for(m = 0; m < IndxAge.taille; m++)
                            {
                                if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                                {
                                    for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                                    {
                                        if(IndxAge.tab[m].tab[n].matricule == tab[4].tab[i].matricule)
                                        {
                                            k = rechIndexPrim(tab[4].tab[i].matricule, tabPrm, *f);
                                            if(k != -1)
                                            {
                                                r = tabPrm[k].pos;
                                                afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }else if (strcmp(region, "6RM-Tamanrasset") == 0)
                    {
                        for(i = 0; i < tab[5].nbMatric; i++)
                        {
                            if(tab[5].tab[i].suppr == 0)
                            {
                                for(m = 0; m < IndxAge.taille; m++)
                                {
                                    if((IndxAge.tab[m].age >= bIAge) && (IndxAge.tab[m].age <= bSAge))
                                    {
                                        for(n = 0; n < IndxAge.tab[m].nbMatric; n++)
                                        {
                                            if(IndxAge.tab[m].tab[n].matricule == tab[5].tab[i].matricule)
                                            {
                                                k = rechIndexPrim(tab[5].tab[i].matricule, tabPrm, *f);
                                                if(k != -1)
                                                {
                                                    r = tabPrm[k].pos;
                                                    afficheEnreg(f, tabPrm[k].n_bloc, &r);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
    return 0;
}
int consultRMA(LnOVC*f,字符区域[MAX_REG_milti],int bIAge,int bSAge,indexSecondRegMilit选项卡[6],tabIndxAge IndxAge,index_primaraire tabPrm[])
/**咨询人兜售注册相关的联合国区域军事区域,该区域位于两个不同的年龄段*/
{
int i,m=0,n,k,r;
如果(strcmp(区域,“1RM Blida”)==0)
{
对于(i=0;i如果((IndxAge.tab[m].age>=bIAge)&(IndxAge.tab[m].age=bIAge)&&(IndxAge.tab[m].age=bIAge)&&(IndxAge.tab[m].age=bIAge)&(IndxAge.tab[m].age=bIAge)&&(IndxAge.tab[m].age=bIAge)&(IndxAge.tab[m].age传递给
顾问的参数不匹配:

consultRMA的原型是:

int consultRMA(LnOVC *f, char region[MAX_REG_MILIT], int bIAge, int bSAge,
               indexSecondRegMilit tab[6], tabIndxAge IndxAge, index_primaire tabPrm[]);
但你这样称呼它:

consultRMA(fichier, bi, bs, s, tabRM, AgeIndx, tableIndexPrim);
consultRMA(fichier, s, bi, bs, tabRM, AgeIndx, tableIndexPrim);
但它可能应该这样称呼:

consultRMA(fichier, bi, bs, s, tabRM, AgeIndx, tableIndexPrim);
consultRMA(fichier, s, bi, bs, tabRM, AgeIndx, tableIndexPrim);

如果启用了所有编译器警告,则会收到参数不匹配的警告(实际上更像是一个错误)。

寻求调试帮助的问题(为什么此代码不起作用?)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建问题陈述。@drsimplist您的上一条评论相互矛盾。问题显然在
consultRMA
函数中打开,因为在调用strcpy时出现分段错误。如果需要帮助,请回答您的问题,并至少向我们显示
consultRMA
的前几行。顺便说一句:
consultRMA
可能会短5-6倍。您有6个几乎相同的循环,它们只因
选项卡[1]中使用的索引不同而不同
选项卡[2]
等等。我还需要说更多吗?好吧,任何像
for…{if(thing){indented_stuff()}}
可以更好地表示为
for…{if(!thing){continue;}/*non_indented_stuff()}
,首先。天啊,非常感谢,我不敢相信原因是如此愚蠢的错误,我检查了参数,但我太累了,没有注意到x()()()())))非常感谢