int sprintf( char *buffer, const char *format , … );
函数说明:将格式化的字符串输入到buffer中。
函数返回值:buffer的长度。
sprintf和printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。
char buffer[100];
int ret = sprintf(buffer, "I am hhh");
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 8 buffer: I am hhh
ret = sprintf(buffer, "I am %s", "haha");
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 9 buffer: I am haha
ret = sprintf(buffer, "0x%08x", 0x123);
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 10 buffer: 0x00000123
ret = sprintf(buffer, "%#08x", 0x123); //#和%x合用的时候自动会添加0x,那么现在的宽度8也会包含0x。
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 8 buffer: 0x000123
ret = sprintf(buffer, "%.3f", 3.1415926f);
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 5 buffer: 3.142
ret = sprintf(buffer, "%.*f", 3, 3.1415926f); // *占用一个指定宽度的位置,由后面参数传入
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 5 buffer: 3.142
//%0m.nf:小数点后需要占n位,总共占m位,如果位数不够,在前面补0。
ret = sprintf(buffer, "%0*.*f", 8, 3, 3.1415926f); // *占用一个指定宽度的位置,由后面参数传入
printf("ret: %d buffer: %s\n", ret, buffer); // ret: 8 buffer: 0003.142ret: 8 buffer: 0003.142
//在“%m.ns”中,m表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n才表示从相应的字符串中最多取用的字符数
char *msg = "hello world!!!";
printf("msg: %s\n", msg); // msg: hello world!!!
printf("msg: %.*s\n", 8, msg); // printf("msg: %s\n", msg);
unsigned int a = 100;
printf("unsigned int:%u\n", a); // unsigned int:100
printf("point of a:%p\n", &a); // point of a:0x7ffd005373cc
snprintf()详解
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);
函数说明:最多从源串中拷贝n-1
个字符到目标串中,然后在后面加一个char
。
函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。
[ buffer100];int
= ret snprintf (,buffer4 ,"I am hhh" );printf
("ret: %d buffer: %s\n",, ret) buffer;// ret: 8 buffer: I a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)