この問題に対する答えをしばらく探していましたが、解決策が見つからないようです。引数の長さが異なる場合、エラーは発生しません。それらが同じ長さの場合、segfault エラーが発生します。この関数は、2 つの文字列を比較し、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);
}
}
助けてくれてありがとう!