【发布时间】:2013-04-07 14:32:06
【问题描述】:
所以我正在编写一个字符串片段重组程序,但遇到以下问题。如果一个字符串包含在另一个字符串中,我需要将第一个字符串设置为两个字符串中的较大者(这是我将两个字符串合并在一起时的关键)。但是,由于某种原因,我的引用传递一直搞砸了,字符串永远不会重新分配,因此合并搞砸了。
这里是引用传递:
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;
}
}
【问题讨论】:
-
如何声明
fragOne和fragTwo? -
到目前为止,我在这里看不到问题。它必须在提供的代码之外。
-
你能举一个失败的字符串对的例子吗?
-
您可能希望使用一小部分您知道的输入来创建错误的结果,然后使用调试器逐行执行代码,以查看一切是否正确。
-
我希望这不是你完整的
FindMaxOverlap函数,因为你已经说过它将返回一个int而我看不到你处理代码中的那部分。
标签: c pointers memory pass-by-reference