我一直在寻找这个问题的答案一段时间,我似乎无法找到解决方案。当参数长度不同时,没有错误。当它们长度相同时,会发生段错误。该函数用于比较两个字符串并返回一个新字符串,其中包含每个第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