我的代碼位於底部。我試圖採取兩個字符串,並根據我收到的編輯抄本來更改它們。我寫了我的代碼,但我不明白爲什麼我得到這樣一個奇怪的輸出。我的目標是首先存儲這兩個字符串的值,然後將它們變成一個二維數組,但是我沒有參與那個目標的第一部分。這裏的問題:字符對齊怪異輸出
創建,以滿足以下的函數:
輸入:編輯轉錄,和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