所以我正在编写一个字符串片段重组程序并且遇到以下问题。如果一个字符串包含在另一个字符串中,我需要将第一个字符串设置为两个字符串中的较大者(这是我将两个字符串合并在一起时的关键)。但是,由于某种原因,我的引用传递一直搞砸了,字符串永远不会重新分配,因此合并搞砸了。
这是通过引用传递:
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;
}
}