资源描述:
《sprintf函数的用法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Sprintf函数的用法:函数简介:函数功能:把格式化的数据写入某个字符串 头文件:stdio.h 函数原型:intsprintf(char*buffer,constchar*format,[argument]…);返回值:字符串长度(strlen)参数说明及应用举例 sprintf格式的规格如下所示。[]中的部分是可选的。 %[指定参数][标识符][宽度][.精度]指示符 若想输出`%'本身时,请这样`%%'处理。 1.处理字符方向。负号时表示从后向前处理。 2.填空字元。0的话表示空格填0;空格是内定值,表示空格就放着
2、。 3.字符总宽度。为最小宽度。 4.精确度。指在小数点后的浮点数位数。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-转换字符 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=- %%印出百分比符号,不转换。 %c整数转成对应的ASCII字元。 %d整数转成十进位。 %f倍精确度数字转成浮点数。 %o整数转成八进位。 %s整数转成字符串。 %x整数转成小写十六进位。%X整数转成大写十六进位。我们的用法:Ucharsf[20],sd[20];d=124;a=sprintf(sf,"%.0f"
3、,d);//Long(Int)到char字符串d=12422.422;a=sprintf(sd,"%f",d);//float到char字符串a=sprintf(sd,"%.6f",d);//float到char字符串这两句相等;即浮点型转换时,小数位不指定情况下为最大6位;注意:以防sd缓冲区溢出,待转换数据先做判断,大于0xFFFFFFFFlocatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhic
4、hliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightcame4. 打印地址信息有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:sprintf(s,"%u",&i);不过通常人们还是喜欢使用16进制而不是10进制来显示一个地址:sprintf(s,"%08X",&i);然而,这些都是间接的方
5、法,对于地址打印,sprintf提供了专门的”%p”:sprintf(s,"%p",&i);我觉得它实际上就相当于:sprintf(s,"%0*x",2*sizeof(void*),&i);5. 利用sprintf的返回值较少有人注意printf/sprintf函数的返回值,但有时它却是有用的,spritnf返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf调用结束以后,你无须再调用一次strlen便已经知道了结果字符串的长度。如:intlen=sprintf(s,"%d",i);对于正整数来说,
6、len便等于整数i的10进制位数。下面的是个完整的例子,产生10个[0,100)之间的随机数,并将他们打印到一个字符数组s中,以逗号分隔开。#include#include#includeintmain(){ srand(time(0)); chars[64]; intoffset=0; for(inti=0;i<10;i++){ offset+=sprintf(s+offset,"%d,",rand()%100); } s[offset-1]='
7、n';//将最后一个逗号换成换行符。 printf(s); return0;}设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat效率高,因为strcat每次调用都需要先找到最后的那个’ ’的位置,而在上面给出的例子中,我们每次都利用sprintf返回值把这个位置直接记下来了。6. 使用sprintf的常见问题sprintf是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprin
8、tf误用导致的问题虽然严重,却很容locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhej