加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

用于Windows CE的snprintf

发布时间:2020-12-14 02:46:47 所属栏目:Windows 来源:网络整理
导读:我的程序在几个平台上运行.其中,Windows CE.目前,sprintf被广泛使用,导致缓冲区溢出等问题很多.我想用snprintf调用替换它们.对于Visual Studio,我发现了这个问题,它解决了问题的win32部分: snprintf and Visual Studio 2010 但我无法让它适用于Windows CE,
我的程序在几个平台上运行.其中,Windows CE.目前,sprintf被广泛使用,导致缓冲区溢出等问题很多.我想用snprintf调用替换它们.对于Visual Studio,我发现了这个问题,它解决了问题的win32部分:

snprintf and Visual Studio 2010

但我无法让它适用于Windows CE,因为函数_vsnprintf_s和_vscprintf以及常量_TUNCATE不可用.有人知道在Windows CE上复制snprintf(linux)行为的方法吗?

解决方法

到目前为止,我已经完成了以下功能:

int my_snprintf(char* str,size_t size,const char* format,...)
{
    int len = 0;
    va_list ap;

    if (size == 0)
    {
        return 0;
    }

    va_start(ap,format);
    len = _vsnprintf(str,size,format,ap);
    va_end(ap);

    if (len < 0 || len >= size)
    {
        len = size - 1;
    }

    if (size > 0)
    {
        str[size - 1] = '';
    }

    return len;
}

初步测试看起来没问题,它甚至可以为WinCE编译..任何反馈都非常感谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读