strcpy有关问题

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,如果出现可能溢出的情况都会抛出异常。