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中是一个递归函数。

4

2 回答 2

2

\0缺少chr. 此外,您实际上并不需要额外的指针chr1。以下应该有效:

 char *str = sequence(arr, pGene1, pGene2, i-1, j-1);
 char chr[2] = { pGene1[i-1], '\0' };
 return strcat(str, chr);
于 2013-06-24T11:06:15.793 回答
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; 
    }
于 2013-06-24T11:27:28.043 回答