在C中获得细分故障,但是为什么

  • 本文关键字:故障 细分 c
  • 更新时间 :
  • 英文 :


我写了一个函数以交叉到DNA段,如果其中一个是 null,则应返回 -1,如果它们彼此相等,则必须返回 -2进行细分故障,我的代码有什么问题?一个不:ı知道什么是分割故障。

#include <stdio.h>
int crossover(char** dna1, char** dna2, int crossoverIndex)
{
   char *temp;
   int a=0;
   if(dna1==NULL || dna2==NULL)
   {
       return -1;
   }
   if(dna1==dna2)
   {
       return -2;
   }
for(a=0;dna1+crossoverIndex+a;a++)
{
 temp=*(dna1+a+crossoverIndex);
*(dna1+a+crossoverIndex)=*(dna2+a+crossoverIndex);
*(dna2+a+crossoverIndex)=temp;
}
return 0;}
   int main(){
     int i,j;
     char dna1[1][3];
     char dna2[1][3];
     dna1[0][0]='G';
     dna1[0][1]='T';
     dna1[0][2]='T';
     dna1[1][0]='A';
     dna1[1][1]='G';
     dna1[1][2]='T';
     dna2[1][0]='G';
     dna2[1][1]='T';
     dna2[1][2]='T';
     dna2[0][0]='A';
     dna2[0][1]='G';
     dna2[0][2]='T';
     crossover(dna1,dna2,0);
     for(i=0;i<2;i++)
 {
   for(j=0;j<2;j++){
   printf("%c ",dna2[i][j]);
 }
printf("n");
   }
return 0; }

您的数组仅为1x3,因此第一个索引的唯一有效值是0,尝试

 char dna1[2][3];
 char dna2[2][3];

此循环的延续检查也令人怀疑:

for (a = 0; dna1 + crossoverIndex + a; a++)

感谢所有答案和评论:)我的代码上帝首先两个问题;我应该写

char dna1[2][3];
char dna2[2][3]; 

而不是

char dna1[1][3];
char dna2[1][3];

,但实际上这不是我的真正问题,因为它很容易看到。另一个在交叉函数中。我应该写

for(a=0;*(dna1+crossoverIndex+a);a++)

而不是

 for(a=0;dna1+crossoverIndex+a;a++)

停止循环。

a不是:在我的问题上,可以保证两个DNA字符串的大小相同。

最新更新