下载此文档

sprintf函数sprintf函数用法.doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
[sprintf函数]sprintf函数的用法[sprintf函数]sprintf函数的用法篇一:sprintf函数的用法sprintf函数的用法自《CSDN社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。,,由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。sprintf是个变参函数,定义如下:intsprintf;除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。格式化数字字符串sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。如://把整数123打印成一个字符串保存在s中。-1的内存16进制表示形式,在Win32平台上,一个short型占2个字节,所以我们自然希望用4个16进制数字来打印它:shortsi=-1;sprintf;产生“FFFFFFFF”,怎么回事,因为spritnf是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底是个4字节的整数还是个2字节的短整数,所以采取了统一4字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32位的整数-1,打印时4个位置不够了,就把32位整数-1的8位16进制都打印出来了。:sprintfsi);就可以了。或者:unsignedshortsi=-1;sprintf;sprintf和printf还可以按8进制打印整数字符串,使用”%o”。注意8进制和16进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16进制或8进制表示。控制浮点数打印格式浮点数的打印和格式控制是sprintf的又一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6位数字,比如:sprintf;//产生””但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%”格式,其中m表示打印的宽度,n表示小数点后的位数。于是,使用”%d”或者”%x”打印一个字符,便能得出它的10进制或16进制的ASCII码;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII字符。以下程序段把所有可见字符的ASCII码对照表打印到屏幕上:for{printf;}连接字符串sprintf的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连接字符串,从而在许多场合可以替代strcat,但sprintf能够一次连接多个字符串。,)比如:char*who=“I”;char*whom=“CSDN”;sprintf;//产生:”IloveCSDN.“strcat只能连接字符串,但有时我们有两段字符缓冲区,他们并不是以’\0’结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的’\0’来结尾。如果直接连接,不管是sprintf还是strcat肯定会导致非法内存操作,而strncat也至少要求第一个参数是个null-terminated-string,那该怎么办呢,我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串也一样的。比如:chara1[]={„A‟,„B‟,„C‟,„D‟,„E‟,„F‟,„G‟};chara2[]={„H‟,„I‟,„J‟,„K‟,„L‟,„M‟,„N‟};如果:sprintf;//Don‟tdothat!十有八九要出问题了。是否可以改成:sprintf;也没好到哪儿去,正确的应该是:sprintf;//产生:”ABCDEFGHIJKLMN”这可以类比打印浮点数的”%”,在”%”中,m表示占用宽度,n才表示从相应的字符串中最多取用的字符数。;//产生:”ABCDEFHIJKL”在许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在sprintf的实现中也被考虑到了,sprintf采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于

sprintf函数sprintf函数用法 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xiarencrh
  • 文件大小38 KB
  • 时间2020-08-02