私はコースワークのためのプログラムを書いています。基本的には配列の要素をソートしてソート後にそのインデックスを見つけることです。私は、Mac OS端末は、私にこのエラーが発生します(最初の入力に)18383833として大きな入力を入力します。 セグメンテーションフォールト:11配列とソートC
ここでは私のコードです:
#include <stdio.h>
#include<stdlib.h>
void swap(int *xp, int *yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
// A function to implement bubble sort
void bubbleSort(int arr[], int n)
{
int i, j;
for (i = 0; i < n-1; i++)
// Last i elements are already in place
for (j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
int main()
{
int y; // 2nd INPUT : the nth order of the arriving person
printf("Enter the nth order of the arriving person \n");
scanf("%i" , & y);
int array[y]; // array to store the values of the number of people in queue
int i; //loop counter
printf("Enter the value of ticket of the first person \n");
scanf("%i " , & array[0]);
printf("\n");
for(i=1 ; i<y ; i++) {
array[i]= (31334 * array[i-1]) % 31337;
//printf(" %i \n" , array[i]);
}
int r; //loop counter
bubbleSort(array , y);
for(r=0 ; r<y ; r++) {
printf("%d (%i) \n" , array[r] , r);
}
}
"%i" ' - >' "%i" ' – BLUEPIXY
ようこそスタックオーバーフロー!あなたの質問を編集して、どのようなデバッグを行ったのか教えてください。私はValgrindまたは類似のチェッカー内であなたの[mcve]を実行し、たとえばGDBなどのデバッガーで調査したと思います。完全なコンパイラ警告を有効にしたことを確認してください。ツールはあなたに何を伝えましたか、どの情報が欠落していますか? Eric Lippertの[小さなプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を読んでください。 –
あなたの可変長配列は、あなたのプラットフォームのローカル変数サイズの制限を超えている可能性があります。代わりに( 'malloc()'または 'calloc()')を動的に割り当ててみてください。 –