我一直在寻找这个问题的答案,但似乎找不到解决方案。当参数长度不同时,没有错误。当它们的长度相同时,会发生段错误。该函数旨在比较两个字符串并返回一个新字符串,其中包含每个第 i 个字符中的最大值。我的功能如下:
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);
}
}
谢谢您的帮助!