2016-11-30 40 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

尝试用(-Wallgcc)启用所有警告编译代码。您行:

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

应该是:

scanf("%d", &listA[i]); 
相关问题