我的代码位于底部。我试图采取两个字符串,并根据我收到的编辑抄本来更改它们。我写了我的代码,但我不明白为什么我得到这样一个奇怪的输出。我的目标是首先存储这两个字符串的值,然后将它们变成一个二维数组,但是我没有参与那个目标的第一部分。这里的问题:字符对齐怪异输出
创建,以满足以下的函数:
输入:编辑转录,和2个原始字符串(3串)
输出:含有两种比对后编辑一个2 d阵列
实施例:
s1 = “vintner”
s2 = “writers”
trans = “RIMDMDMMI”
R表示 “替换” I代表 “插入” M代表 “匹配” d代表 “删除” 答:
alignment={“v_intner_”,
“wri_t_ers”}; //return a 2d array
函数原型:
char** getAlignment(char* s1, char* s2, char* s3);
这里是我下面的代码:
char TestS1[] = "vintner";
char TestS2[] = "writers";
char TestS3[] = "RIMDMDMMI";
char twoDarray[2][10];
char** getAlignment(char* s1, char* s2, char* s3){
char transTemp[n];
char s1Temp[n];
char s2Temp[n];
char sOne[n];
char sTwo[n];
strcpy(sOne, s1);
strcpy(sTwo, s2);
int jj;
strcpy(transTemp, s3);
int kk;
for(jj=0, kk=0; jj<n, kk<n; jj++, kk++){
if(transTemp[jj]=='R')
{
s1Temp[kk] = sOne[jj];
s2Temp[kk] = sTwo[jj];
}
if(transTemp[jj]=='I'){
s1Temp[kk] = '_';
s1Temp[kk+1] = sOne[jj];
s2Temp[kk] = sTwo[jj];
kk++;
}
if(transTemp[jj] == 'M'){
s1Temp[kk] = sOne[jj];
s2Temp[kk] = sTwo[jj];
}
if(transTemp[jj] == 'D'){
s2Temp[kk] = '_';
s2Temp[kk+1] = sTwo[jj];
s1Temp[kk] = sOne[jj];
kk++;
}
}
printf("\ns1Temp = %s\n", s1Temp);
printf("\ns2Temp = %s\n", s2Temp);
return 0;
}
main()
{
printf("The new method returns: ", getAlignment(TestS1,TestS2,TestS3));
return 0;
}
无格式说明在这里:'的printf( “新方法返回:” getAlignment(TestS1,TestS2,TestS3));' – 2015-03-02 06:55:07
是啊,感谢指出了这一点。但是,我并不在意printf语句发生了什么。我只是想调用这个函数。我关注的值被打印在函数中。 – 2015-03-02 06:59:24
你正试图返回一个'int'函数来返回一个'char **' – 2015-03-02 07:00:19