strtok 的安全隐患
Author: admin Publish: August 7, 2010 Category: Default
char szNameList[256]=“abc,def”;
const char* pszName=strtok(szNameList,',');
while(pszName)
{
fun(pszName); // 在这里调用的函数内部可能也使用了strtok操作 直接影响了下面token取值
pszName = strtok(NULL,',');
}
// -------------------------------------------------------------------------
对strtok这样一个隐患及其诡异的用法,标准库居然一直没有什么应对,太奇怪了!
解决方案
......
/*const*/ char* pszName=strtok(szNameList,',');
while(pszName)
{
......
pszName = strtok(pszName+strlen(pszName)+1,',');
}