C sprintf函数

在操作字符串的时候,经常会遇到int转换成char类型的情况,经常会使用itoa函数,但是这个函数不是标准的C函数,不是所有的平台都认识它。

char *itoa(int value, char *string, int radix);参数第一个是数字,第二个是字符串,第三个是类型,二进制、八进制还是十进制。

遇到跨平台的情况,可以使用sprintf,定义如下:

int sprintf(char *buffer, const char*format [,argument] ...);

其中,bufferchar型指针,指向将要写入的字符串的缓冲区。format:格式化字符串。[argument]...:可选参数,可以是任何类型的数据。返回值是字符串长度(strlen)。

...表示

其最常用的地方是格式化字符输出,如下所示:

sprintf(s,"%d",123);
sprintf(s,"%d***%d",m,n);

使用起来比较方便,但格式要严格点,还有这个函数是不安全的。如果用安全的,可以用sprintf_s,如下

int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] ...);

        sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。经典例子如下所示:

#include <stdio.h>
int main( void )
{
char buffer[200], s[] = "computer", c = 'l';
int i = 35, j;
float fp = 1.7320534f;
// Format and print various data:
j = sprintf_s( buffer, 200, " String: %s\n", s );
j += sprintf_s( buffer + j, 200 - j, " Character: %c\n", c );
j += sprintf_s( buffer + j, 200 - j, " Integer: %d\n", i );
j += sprintf_s( buffer + j, 200 - j, " Real: %f\n", fp );
printf_s( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}

常用转换字符

%% 印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值