我正在玩一个简单的c代码。我想在days数组指针中打印所有日期字符串。但是我正在运行分段故障。问题在于for循环。我在这做错了什么。感谢
main(){
const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",\
"Thursday", "Friday", "Saturday", "Sunday"};
int i;
for(i = 0; i < sizeof(days); ++i)
printf( "%s\n", days[i]);
}
答案 0 :(得分:2)
int main(){
const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",\
"Thursday", "Friday", "Saturday", "Sunday"};
size_t i;
for(i = 0; i < sizeof days / sizeof days[0]; ++i)
printf( "%s\n", days[i]);
}
sizeof day
产生整个数组的大小,因此你必须将其除以其中一个元素的大小以获得它所包含的元素数。
答案 1 :(得分:2)
将for
语句更改为
for( i = 0; i < ( sizeof(days)/sizeof(days[0]) ); ++i )
sizeof
表达式为您提供数组中元素的数量,而不是它所需的字节数
执行此操作的经典方法是宏
#define SIZEOF( X ) ( sizeof( X )/sizeof( X[0]) )
然后使用SIZEOF
代替sizeof