snprintf函数测试
另外,我们还可以利用snprintf函数来提前获取需要的内存空间大小,按如下格式调用:
ret = snprintf(NULL,0,"%s","test");
即设置第一二个参数分别为NULL和0,获得的ret就为实际需要的内存空间大小。这对于打印长度不可预知的字符串比较有效,便于我们合理分配空间,既不浪费又不产生截断。不过,这仅在C99下有效,在SUSv2标准下是无定义的,应该注意咯,O(∩_∩)O~。
测试代码:================================================================
#include
#include
int main()
{
char desc[8];
int ret;
//为了查看是否有自动补\0情况,我们将desc设置非\0值。
memset(desc, 'a', sizeof(desc));
ret = printf("%s\n",desc);
printf("%d=%s\n", ret, desc);
//结果(出现乱码):18=aaaaaaaa堶
阅读(2812) | 评论(0) | 转发(0) |