每当我运行C代码时,就会返回Segmentation Fault

时间:2016-05-04 03:55:22

标签: c arrays

我是C的新手,来自Java。

我制作了以下简单的程序,编译得很好,但每当我运行它时,nano都会抛出一个Segmentation Fault。它的目的是遍历数组并让它在一个单独的行上打印出每个元素。

int main()
{
    int array[5] = {1, 2, 3, 4, 5};
    int i = 0;
    for (i = 0; i < sizeof(array); i++)
    {
            puts(array[i]);
    }
}

我做错了什么?

1 个答案:

答案 0 :(得分:8)

首先,puts采用空终止字符串,而不是整数。其次,要确定数组中元素的数量,请使用sizeof(array)/sizeof(array[0]),因为sizeof(array)是数组的总字节数。第三,使用int main(void)作为标准C.试试这个:

int main(void)
{
    int array[5] = {1, 2, 3, 4, 5};
    int i = 0;
    for (i = 0; i < sizeof(array) / sizeof(array[0]); i++)
    {
            printf("%d\n", array[i]);
    }
}