• 使用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

  • 相关阅读:
    iphone6闪存检测
    knowledges address
    类linux系统/proc/sysrq-trigger文件功能作用
    iphone 6s pp助手 越狱
    C pointers
    ubuntu15.04 TLS
    ubuntu cenots 禁止本地登陆
    CentOS7
    CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用
    SAS学习笔记之函数应用
  • 原文地址:https://www.cnblogs.com/mydomain/p/2772528.html
Copyright © 2020-2023  润新知