打印数字时出现分段错误

时间:2015-12-03 20:19:36

标签: c

我正在尝试编写一个读取20个数字的简单代码,然后以相反的顺序打印它们。

代码如下。

int main(){
    int array[20];
    int i;
    for (i=0; i<20; i++) scanf("%d", &array[i]);
    for (i=20; i > 0; i++) printf("%d\n", array[i]);
}

我无法弄清楚为什么在插入数字而不是打印它们之后会给我一个分段错误(11)

5 个答案:

答案 0 :(得分:6)

第二个char *myMatrix = (char *)matrix_data; matrix[x][y] = myMatrix + ((x - offset.x) * size.y * size.z + (y - offset.y) * size.z - offset.z) * dataSize; 循环有3个问题:

  1. 从20开始(将获得第21个元素)
  2. 你想减少i而不是增量
  3. 我相信你也想在第0位显示第一个元素(所以for代替>=0
  4. >0

答案 1 :(得分:2)

问题出在第二个awk '!p && p=index($0, ":"){$0=substr($0, p+1)} p' file 。您正在尝试访问阵列的第20个位置,但它只包含来自的索引 0到19,所以你的代码应该是:

for

答案 2 :(得分:1)

在你的循环中

for (i=20; i > 0; i++) printf("%d\n", array[i]);
你有三个错误。 a)应从19开始,b)在0结束,c)应减少,所以

for (i=19; i >= 0; i--) printf("%d\n", array[i]);

答案 3 :(得分:0)

将第二个for循环更改为19到0(含)。

答案 4 :(得分:0)

for (i=20; i > 0; i++) printf("%d\n", array[i]);

这应该是i--