<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 25, comments - 69, trackbacks - 0, articles - 2

    sprintf的問題

    Posted on 2006-11-28 18:18 壯士日志 閱讀(921) 評論(0)  編輯  收藏 所屬分類: 編程技術

    ??????今天系統莫明其妙的故障,以前用的好好的客戶信息匯總統計突然出現異常,查看日志顯示oracle的sql語句異常.
    ??????跟蹤調試后臺發現問題出現在sprintf語句上面,sql預定義 char[8000],然后用sprintf來格式化,結果當語句的數據超過8000的時候就不能正常處理了.
    ???? google了一下:

    眾所周知,sprintf不能檢查目標字符串的長度,可能造成眾多安全問題,所以都會推薦使用snprintf.

    snprintf(_snprintf)的聲明是這樣的

    int _snprintf(
    ?? char *buffer,
    ?? size_t count,
    ?? const char *format [,
    ????? argument] ...
    );

    If len < count, then len characters are stored in buffer, a null-terminator is appended, and len is returned.

    If len = count, then len characters are stored in buffer, no null-terminator is appended, and len is returned.

    If len > count, then count characters are stored in buffer, no null-terminator is appended, and a negative value is returned.


    最常見的錯誤用法有:
    1.
    char sa[256]={0};
    _snprintf(sa,sizeof(sa),"%s",sb);
    //錯誤原因:當sb的長度>=256的時候,sa將沒有'\0'結尾

    2.
    char sa[256];
    _snprintf(sa,sizeof(sa)-1,"%s",sb);
    //錯誤原因:當sb的長度>=255的時候,sa將沒有'\0'結尾,忘記給sa初始化

    3.
    char sa[256];
    _snprintf(sa,sizeof(sa)-1,"%s",sb);
    sa[sizeof(sa)]=0;
    //錯誤原因:最后一行數組越界

    正確的用法
    1. //推薦用法
    char sa[256];
    sa[sizeof(sa)-1]=0;
    _snprintf(sa,sizeof(sa),"%s",sb);
    if(sa[sizeof(sa)-1]!=0)
    {
    ?? printf("warning:string will be truncated");
    ?? sa[sizeof(sa)-1]=0;
    }

    2.
    char sa[256]={0};
    int result = _snprintf(sa,sizeof(sa),"%s",sb);
    if(result==sizeof(sa) || result<0)
    {
    ??? printf("warning:sting will be truncated");
    ?? sa[sizeof(sa)-1]=0;
    }

    主站蜘蛛池模板: 亚洲欧洲日韩国产| 两个人看www免费视频| 亚洲精品视频专区| 亚洲中文字幕无码爆乳AV| 扒开双腿猛进入爽爽免费视频 | 免费国产小视频在线观看| 亚洲高清免费在线观看| 99热在线精品免费播放6| 国产一区二区三区免费观在线| 猫咪免费人成网站在线观看入口| 亚洲中文字幕无码久久| 亚洲免费黄色网址| 精品亚洲成A人无码成A在线观看| 亚洲免费在线播放| 亚洲精品无码久久久久久久| 亚洲伊人tv综合网色| 久久亚洲精品国产精品| 久久精品国产亚洲77777| 亚洲精品美女视频| 亚洲国产理论片在线播放| 亚洲三级视频在线| 亚洲AV无码之国产精品| 亚洲AV无码成人精品区狼人影院 | 亚洲成a人片在线观看无码专区| 自拍偷自拍亚洲精品第1页| 亚洲综合区小说区激情区| 亚洲无线码一区二区三区| 亚洲一卡2卡三卡4卡有限公司| 亚洲精品永久www忘忧草| 亚洲色成人网站WWW永久四虎| 亚洲国产精品成人午夜在线观看 | 99视频在线精品免费观看6| 久久午夜免费视频| 一区二区三区亚洲视频| 国产亚洲欧洲精品| 亚洲一久久久久久久久| 国产日韩精品无码区免费专区国产| 在线人成免费视频69国产| 最近免费中文字幕大全| 亚洲另类少妇17p| 亚洲高清美女一区二区三区|