这个printf表达式安全吗?

时间:2014-10-09 14:56:56

标签: c printf

我只是想知道这个表达式是否安全:

int main (void)
{
  char my_tab[256]={0x18}; /* not '\0' */

  printf("Is it safe ? : %.256s",my_tab); /* is it safe ? */
}

先谢谢你。

2 个答案:

答案 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的访问不得超出边界。