2016-11-30 5 views
0

最初にいくつかの入力を照会しようとしていて、その数の入力で動的リストを埋めようとしています。その後、逆の順序で印刷します。何らかの理由でSIGSEGVエラーが出ますが、無限ループやアドレスエラーを見つけることができません。何が間違っているのか探してみましょう。シグナルで終了SIGSEGV(アドレス境界エラー)

#include <stdio.h> 
#include <stdlib.h> 

int main() { 
    int input; 
    printf("Enter a non-negative number: "); 
    scanf("%d", &input); 

    int *listA; 
    listA = (int*)malloc(sizeof(int[input])); 
    printf("Now, enter %d non-negative numbers: ", input); 
    for (int i = 0; i < input; i++) { 
     scanf("%d", listA[i]); 
    } 
    printf("In reverse order, your input is: "); 
    for (int i = input-1; i >=0; i--) { 
     printf("%d",listA[i]); 
    } 
    free(listA); 
    return 0; 
} 

答えて

4

有効になっているすべての警告(gcc-Wall)を使用してコードをコンパイルしてみます。あなたのライン:

scanf("%d", listA[i]); 

は次のようになります。

scanf("%d", &listA[i]); 
関連する問題