Error[8]: Undefined offset: 229, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

sprintf()函数详解
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 [+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Linux C 字符串函数sprintf()和snprinttf_C_内存溢出

Linux C 字符串函数sprintf()和snprinttf

Linux C 字符串函数sprintf()和snprinttf,第1张

sprintf()函数详解
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 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/676211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存