关于strcpy越界的问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 19:53:11
bool CUnknowWord::Configure(char *sConfigFile,enum TAG_TYPE type)
{
char sFilename[100];

//Load the unknown recognition dictionary
strcpy(sFilename,sConfigFile);
strcat(sFilename,".dct");
m_dict.Load(sFilename);
这个里面的strcpy,strcat为什么会出现越界的问题呢?

如果sConfigFile的长度大于100,就会出现越界,会覆盖未知的区域。

就算copy没有越界,如果加上".dct",长度大于100了,还是会出问题的

如果copy的长度大于100,就会出现越界,会覆盖未知的区域。

建议用strncpy,你的问题这样解决,strncpy( sFilename, sConfigFile, min(strlen(sConfigFile) - strlen(.dct), 100) );

也就是第二个参数长度不能大于第一个参数。

char sFilename[100];
这名改为:CString sFilename,用MFC提供的CSTRING类可非常轻松的进行字符串的操作.比如想在后面加上".dct"直接可用:
sFilename+=".dct";