프로그램을 실행하려고하면 메시지가 나타납니다. 왜?배열을 while 및 when로만 정렬하는 경우
Segmentation fault
내 코드 :
#include <stdio.h>
void sort_array(int *arr, int s);
int main() {
int arrx[] = { 6, 3, 6, 8, 4, 2, 5, 7 };
sort_array(arrx, 8);
for (int r = 0; r < 8; r++) {
printf("index[%d] = %d\n", r, arrx[r]);
}
return(0);
}
sort_array(int *arr, int s) {
int i, x, temp_x, temp;
x = 0;
i = s-1;
while (x < s) {
temp_x = x;
while (i >= 0) {
if (arr[x] > arr[i]) {
temp = arr[x];
arr[x] = arr[i];
arr[i] = temp;
x++;
}
i++;
}
x = temp_x + 1;
i = x;
}
}
내가 문제가 if
문에 있다고 생각합니다. 당신은 어떻게 생각하십니까? 왜 그렇게됩니까? 배열에 대한 포인터를 긍정적 인 방법으로 사용한다고 생각합니다.
감사합니다.
'i'가 너무 커서 범위를 벗어나는 액세스가 발생하여 * 정의되지 않은 동작 *이 발생합니다. – MikeCAT
-g를 사용하여 프로그램을 컴파일하고 gdb에서 실행하면 실패한 위치가 표시됩니다. – pm100
[bubble sort] (https://en.wikipedia.org/wiki/Bubble_sort) 메소드 사용 ([ 여기] (http://www.sanfoundry.com/c-program-sort-array-ascending-order/) 배열을 오름차순으로 정렬) – iRove