我一直在尋找這個問題的答案一段時間,我似乎無法找到解決方案。當參數長度不同時,沒有錯誤。當它們長度相同時,會發生段錯誤。該函數用於比較兩個字符串並返回一個新字符串,其中包含每個第i個字符中最大的字符串。我的功能如下:C99分割溢出strlen,不一致
char* charMax(char* string1, char* string2)
{
int length1 = strlen(string1);
printf("%d", length1);
int length2 = strlen(string2);
int lengthLarge = length1 >= length2 ? length1 : length2;
int lengthSmall = length1 <= length2 ? length1 : length2;
char* largerString = length1 >= length2 ? string1 : string2;
char* result = malloc(lengthLarge + 1);
for (int i = 0; i < lengthSmall; i++)
result[i] = string1[i] > string2[i] ? string1[i] : string2[i];
if (length1 != length2)
{
for (int i = lengthSmall; i < lengthLarge; i++)
result[i] = largerString[i];
result[lengthLarge + 1] = '\0';
return result;
free(result);
}
}
感謝您的幫助!
我把支架放錯了地方。多麼愚蠢的錯誤。謝謝。 – user2159044 2013-03-12 02:33:41