そのため、文字列フラグメントの再構築プログラムを作成していますが、次のような問題が発生しています。一方の文字列がもう一方の文字列に含まれている場合、最初の文字列を 2 つの文字列のうち大きい方に設定する必要があります (これは、2 つの文字列を結合するときに重要です)。ただし、参照渡しが何らかの理由で混乱し続け、文字列が再割り当てされないため、マージが混乱します。
参照渡しは次のとおりです。
int oneRound(char*frags[], int* numFrags) {
int currMax = 0;
int max = 0;
int mergeOne = 0;
int mergeTwo = 0;
char *fragOne;
char *fragTwo;
for(int i = 0; i < *numFrags; i++) {
for (int j = i+1; j < *numFrags; j++) {
fragOne = frags[i];
fragTwo = frags[j];
currMax = FindMaxOverlap(&fragOne, &fragTwo);
if (currMax >= max) {
max = currMax;
mergeOne = i;
mergeTwo = j;
}
}
}
で呼び出される関数は次のとおりです。
int FindMaxOverlap(char**firstString, char**secondString)
if (strstr(*firstString, *secondString) != NULL || strstr(*secondString, *firstString) != NULL) {
maxOverlap = length;
if (strlen(*firstString) < strlen(*secondString)) {
char *temp = *firstString;
*firstString = *secondString;
*secondString = temp;
}
}