2013-06-24 134 views
0

我试图用C语言实现了LCS,但我坚持在下面的代码等同于C:字符串和字符串联

return backtrack(C, X, Y, i-1, j-1) + X[i] 

我尝试使用strcat()

char *str = sequence(arr,pGene1,pGene2,i-1,j-1); 
char chr= pGene1[i-1]; 
char *chr1 = &chr; 
return strcat(str,chr1); 

但它给了我一个分段错误。在上面的代码sequence是一个递归函数。

回答

0

我已经使用这个功能,现在它的工作原理

char * addchartostring(char * str, char mych){ 
      int l = strlen(str); 
      char *added = (char*)malloc((l+2)*sizeof(char)); 
      char ch[] = {mych, '\0'}; 
      strcpy(added, str); 
      strcat(added, ch); 
      return added; 
    } 
2

您缺少chr\0终止符。你也不需要额外的指针chr1。下面应该工作:

char *str = sequence(arr, pGene1, pGene2, i-1, j-1); 
char chr[2] = { pGene1[i-1], '\0' }; 
return strcat(str, chr); 
+0

是的,你是正确的,但不知它仍然无法正常工作。 –

+1

确保你的'sequence'函数分配了足够的存储空间来添加额外的字符。如果没有,那么你将需要为结果创建一个新的字符串。 –

+0

是的,这就是我的想法。谢谢。 –