首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

strcpy有关问题

2013-08-01 
strcpy问题我定义一个char str[32].然后到数据库读一个字符串,拷贝到str中去。strcpy(str,(LPCSTR)_bstr_t(

strcpy问题
我定义一个char str[32].然后到数据库读一个字符串,拷贝到str中去。strcpy(str,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("Position")));其实Position长度大于32。这里的strcpy竟然没报错误,这是为什么?
[解决办法]
strcpy是不负责越界检查的,下面是strcpy的简单实现。
char *strcpy(char *des, char *sour)
{
    char *tmp = des;
    while(*sour)
    {
        *des = *sour;
        des++;
        sour++;
    }
    return tmp;
}
[解决办法]
strncpy也是不安全的,它处理结尾\0时有null,如果源串长度大于n,则strncpy不复制最后的'\0'结束符。而且也无法处理内存重叠的情况。请使用strncpy_s,它可以分别指定Src和Dest的长度,而且也可以如何追加NULL,如果出现可能溢出的情况都会抛出异常。

热点排行