如何使用sprintf()函数 sprintf和printf的区别?
如何使用sprintf()函数 sprintf和printf的区别?
函数原型:int sprintf( char *buffer, const char *format, [ argument] … );这个函数包含三个部分的参数:buffer:char型指针,指向将要写入的字符串的缓冲区。format:格式化字符串。即可选参数的想要输入的数据类型。[argument]...:可选参数,可以是任何类型的数据。
功能说明:这个函数就是把第三部分的数据,按照第二部分格式化字符的格式,把第三部分的数据进行”格式化“,然后在把格式化后的数据类型,存储到字符串的缓存区间里去。
%m.n格式说明:如果按格式%m.n格式输出,若数据长度超出m(加小数点),则按实际长度输出;反之则左补空格(%-m.n右补空格)。
整数转化为字符串:char str[10];sprintf(str ,"%d", 111); //产生"111"说明:这个是把111存储到了str数组中,存储为“111”
两个整数组合成一个字符串:char str[10];sprintf(str,"%4d%4d", 123,4567); //产生:“ 1234567"说明:把整数123 整数4567 打印成一个字符串保存在str 中。不足的左边补空格
两个整数转化为带小数的字符串:char str[10];sprintf(str,"%d%cf%d", 1,'.',345); //产生:1.345说明:两个整数形成带小数点的字符串,极大的方便了不支持做浮点运算,且需要小数点时。
浮点型转化为字符串:char str[10];sprintf(str,"%4.2f", 1234.244); //产生:“1234.24“说明:一个浮点型数据形成浮点型字符串
多种数据融合:char str[10];sprintf(str,"%4.2f%s", 1234.244,"cm"); //产生:“1234.24cm”说明:一个浮点型数据形成浮点型字符串,后添加单位。
特别提示
注意%m.n格式的要点。
sprintf和printf的区别?
printf()的作用是标准化输出,默认的对象是标准输出缓冲区,要有一定的条件才能把缓冲区里面的数据输出
sprintf() 作用是格式化输出函数,保存字符串到缓冲区中,起到拼接字符串的作用
sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。
sprintf的第一个参数应该是存储目的字符串的缓冲区,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。
因为C语言在进行字符串操作时不检查字符串的空间是否够大,所以可能会出现数组越界而导致程序崩溃的问题。即使碰巧,程序没有出错,也不要这么用,因为早晚会出错。所以一定要在调用sprintf之前分配足够大的空间给buf。
printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的
格式说明符(formatspecifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终
函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中
//把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16 进制打印:
sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐