sprintf使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23335927/article/details/78543161

功能:把格式化的数据写入指定的字符串缓存区中

原型:int sprintf( char *buffer, const char *format, [ argument] … );

参数:buffer:char型指针,指向字符串缓存区

           format:想要将参数转换成的格式

           [ argument] …:任何类型的数据

返回值:返回转换完成后字符串的长度,不包括‘\0’

通俗的讲,sprintf函数就是将输入参数argument转换成format格式,再将所有已转换完成的参数组合成一个字符串存储在指定的buffer里。

其中,format格式常用的有以下几种:

1 %% 印出百分比符号,不转换

2 %c 整数转成对应的 ASCII 字元

3 %d 整数转成十进位

4 %f 倍精确度数字转成浮点数

5 %o 整数转成八进位

6 %s 整数转成字符串

7 %x 整数转成小写十六进位

8 %X 整数转成大写十六进位

使用技巧:这里只讲一些自己遇到一些困惑的地方,大多数常用方法网上有很多

int main(void)
{
	char buf[5] = {0}; 	
	sprintf(buf,"%d",65);
	printf("%d\n",buf[0]);
	printf("%d\n",buf[1]);
	printf("%d\n",buf[2]);
	return 0;
}

输出 buf[0] = 54;buf[1] = 53;buf[2]=0;

解释;将65以整数的形式转换为字符串"65"保存在buf里,其中buf[0] = '6',buf[1]='5';用这种格式可以轻易的将一个整数每个位转化为字符

int main(void)
{
	char buf[5] = {0}; 	
	sprintf(buf,"%c",65);
	printf("%d\n",buf[0]);
	printf("%d\n",buf[1]);
	printf("%d\n",buf[2]);
	return 0;
}
输出 buf[0] = 65;buf[1]=0;buf[1]=0;

解释:将65以字符的形式'A'转化为字符串"A"保存在buf里,其中buf[0] = 'A';

int main(void)
{
	char buf[5] = {0}; 	
	sprintf(buf,"%s","65");
	printf("%d\n",buf[0]);
	printf("%d\n",buf[1]);
	printf("%d\n",buf[2]);
	return 0;
}
输出:buf[0] = 54;buf[1]=53;buf[2] = 0;
解释:将字符串65以字符串格式存在buf里,buf[0] = '6',buf[1] = '5';

int main(void)
{
	char buf[5] = {0}; 	
	sprintf(buf,"%05d",192);
	printf("%s\n",buf);
	printf("%c\n",buf[0]);
	printf("%c\n",buf[1]);
	printf("%c\n",buf[2]);
	printf("%c\n",buf[3]);
	printf("%c\n",buf[4]);
	return 0;
}

输出00192,buf[0] = '0',buf[1] = '0',buf[2] = '1',buf[3] = '9',buf[4] = '2';

常用于数据长度不够左边补零进行对齐

int main(void)
{
	char buf[5] = {0}; 	
	sprintf(buf,"%-5d",192);//-符号左对齐控制符
	printf("%s\n",buf);
	printf("%c\n",buf[0]);
	printf("%c\n",buf[1]);
	printf("%c\n",buf[2]);
	printf("%c\n",buf[3]);
	printf("%c\n",buf[4]);
	return 0;
}
输出192   (两个空格),buf[0] = '1',buf[1] = '9',buf[2] = '2',buf[3]、buf[4]里均是空格,常用语于左对齐
注意:左对齐时buf[0]-buf[1]里存储空格;而右对齐中buf[2]-buf[4]里存储'1','9','2'

猜你喜欢

转载自blog.csdn.net/qq_23335927/article/details/78543161