vi snprintf.cpp
./a.out
printf add char =jackxiang's test by ddd...
Add Time : 2014-02-10
snprintf(szValue, sizeof(szValue), %4d%2d%2d",1900+p->tm_year,1+p->tm_mon,p->tm_mday);
保证sizeof(szValue)大于9,只要一个sizeof就行。
snprintf(szValue,1024,"%s%s%s",Y,M,D);
连接字符串可snprintf格式化,少可memcpy:
我是64位整数,需要ld格式化?是我这样写?
%ld,输出长整型数据。例:long a=135790;printf(“%ld”,a);如果用%d输出就会发生错误,因为整型数据的范围是-32768到32767.对long型数据应当用%ld格式输出,对长整型数据也可以指定字段宽度,如:%8ld。
————————————————————————————————————————————————————————————————————————
函数原型:
int snprintf(char *str, size_t size, const char *format, ...);
size代表长度,如果要拷贝到szValue的数据长度超过size,就会被截断。
这样保证拷贝的数据缓冲区不溢出
#include <stdio.h>
int main()
{
char szValue[1024];
char snValue[1024]="jackxiang's test by ddd...\n";
snprintf(szValue,sizeof(szValue),"printf add char =%s",snValue);
printf("%s",szValue);
}
int main()
{
char szValue[1024];
char snValue[1024]="jackxiang's test by ddd...\n";
snprintf(szValue,sizeof(szValue),"printf add char =%s",snValue);
printf("%s",szValue);
}
./a.out
printf add char =jackxiang's test by ddd...
Add Time : 2014-02-10
snprintf(szValue, sizeof(szValue), %4d%2d%2d",1900+p->tm_year,1+p->tm_mon,p->tm_mday);
保证sizeof(szValue)大于9,只要一个sizeof就行。
snprintf(szValue,1024,"%s%s%s",Y,M,D);
连接字符串可snprintf格式化,少可memcpy:
我是64位整数,需要ld格式化?是我这样写?
%ld,输出长整型数据。例:long a=135790;printf(“%ld”,a);如果用%d输出就会发生错误,因为整型数据的范围是-32768到32767.对long型数据应当用%ld格式输出,对长整型数据也可以指定字段宽度,如:%8ld。
————————————————————————————————————————————————————————————————————————
函数原型:
int snprintf(char *str, size_t size, const char *format, ...);
size代表长度,如果要拷贝到szValue的数据长度超过size,就会被截断。
这样保证拷贝的数据缓冲区不溢出
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3736/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2016-1-5 16:11
评论列表