我只是想知道这个表达式是否安全:
int main (void)
{
char my_tab[256]={0x18}; /* not '\0' */
printf("Is it safe ? : %.256s",my_tab); /* is it safe ? */
}
先谢谢你。
答案 0 :(得分:3)
如果您担心my_tab
是否为空终止,请不要。
char my_tab[256]={0x61};
相当于:
char my_tab[256]={0x61, 0, 0, 0 /* omits others */, 0};
我省略了其他0,所有未明确初始化的元素都被初始化为0
。
答案 1 :(得分:1)
应该是。根据描述精度的printf
的联机帮助页:
精度
...或从字符串中为s和S转换打印的最大字符数。
因此my_tab
的访问不得超出边界。