我是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]);
}
}
我做错了什么?
答案 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]);
}
}