1
次のコードはサンプル入力で正常に実行されますが、13のテストケースでセグメント化エラーが発生します。Hackerrank円形アレイ回転セグメント化エラー
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int main(){
int n;
int k;
int q;
int index[q];
scanf("%d %d %d",&n,&k,&q);
int *a = (malloc(sizeof(int) * n));
for(int a_i = 0; a_i < n; a_i++){
scanf("%d",&a[a_i]);
}
for(int a0 = 0; a0 < q; a0++){
int m;
scanf("%d",&m);
index[a0] = m;
}
for(int i=0; i<k; i++){
int ap = a[n-2];
for(int p=1; p<n-1; p++){
a[p] = a[p-1];
}
a[0] = a[n-1];
a[n-1] = ap;
}
for(int j=0; j<q;j++){
printf("%d\n", a[index[j]]);
}
return 0;
}
セグメント違反がどこにあるかわかりません。 where I asked about declaring a as a pointer using malloc
malloc()を使って宣言すると、割り当てエラーをチェックしないためにセグメント化エラーが発生する可能性がありますが、配列として定義しても問題は解決されている可能性があります残った。
フォールトフォールト(5つのハックスでなければならない)の入力を1つ購入し、 'gdb'を使用します。 –
うーん...興味深い: 'int q; int index [q]; ' – KompjoeFriek
@ kartikeykant18できません...そしてここでqは初期化されていません。 – Cherubim