パイプから文字を読み取り、それらを結果文字列に入れることでマージを実装しようとしています。セグメンテーション エラーが発生し続け、問題の原因をデバッグするのに苦労しています。この関数の呼び出しを削除すると問題が解決するので、ここで何かが間違っていると感じています。
MAX_LENGTH は 1024 に設定されており、約 30 文字しか並べ替えていないので、余裕があるはずです。
int merge(char *result, int *leftpipefd, int *rightpipefd) {
char left[MAX_LENGTH/2];
char right[MAX_LENGTH/2];
int leftpos = 0;
int rightpos = 0;
int resultpos = 0;
read(leftpipefd[READ_END], left, MAX_LENGTH/2);
read(rightpipefd[READ_END], right, MAX_LENGTH/2);
int leftlen = strlen(left);
int rightlen = strlen(right);
while (leftpos < leftlen || rightpos < rightlen) {
if (leftpos < leftlen && rightpos < rightlen) {
if (left[leftpos] <= right[rightpos]) {
result[resultpos] = left[leftpos];
resultpos++;
leftpos++;
} else {
result[resultpos] = right[rightpos];
resultpos++;
rightpos++;
}
} else if (leftpos < leftlen) {
result[resultpos] = right[rightpos];
resultpos++;
rightpos++;
} else if (rightpos < rightlen) {
result[resultpos] = left[leftpos];
resultpos++;
leftpos++;
}
}
return EXIT_SUCCESS;
}
誰かが私が間違っていることを見ることができますか?