zoukankan      html  css  js  c++  java
  • 使用sprintf需要注意的地方

    sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。

    sprintf_s()sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险 。这个安全版本的原型是:

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

    缓冲区溢出

    第一个参数的长度太短了,建议变参对应一定要细心,而打印字符串时,尽量使用%.ns”的形式指定最大字符数。

    strftime

    sprnitf 还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:

    time_t t = time(0);

    //产生"YYYY-MM-DD hh:mm:ss"格式的字符串。

    char s[32];

    strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));

    原文:

    http://baike.baidu.com/view/1295144.htm

  • 相关阅读:
    final有什么用?
    数组的定义
    作业
    List 、Set数据结构
    报表工具实现单据套打
    动态格报表的制作
    图形钻取
    报表工具轻松搞定卡片式报表
    列表钻取
    报表中如何实现不规则布局
  • 原文地址:https://www.cnblogs.com/mydomain/p/2772528.html
Copyright © 2011-2022 走看看