sprintf函数原型_sprintf用法

sprintf函数原型_sprintf用法,第1张

  sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。

  函数功能:把格式化的数据写入某个字符串

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

  返回值:字符串长度(strlen)

  例子:

  char* who = “I”;

  char* whom = “CSDN”;

  sprintf(s, “%s love %s.”, who, whom); //产生:“I love CSDN. ” 这字符串写到s中

  sprintf(s, “%10.3f”, 3.1415626); //产生:“ 3.142”
    
        sprintf(s, “%.3f”, 3.1415626); //不指定总宽度,产生:“3.142”

  注意一个问题,你猜

  int i = 100;

  sprintf(s, “%.2f”, i);

  会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:

  sprintf(s, “%.2f”, (double)i);

  第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i 的那4 个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编排的结果是否正确。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2474936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存