先来看代码:
char fileName[260]{ 0 };
string name("lalab");
strncpy_s(fileName, name.c_str(), name.length());
if (fileName[10] == '\0')
{
printf("a");
}
else
{
printf("b");
}
按说fileName
在初始化时已经将260字节全部填充为0了,VS编译器的release模式下fileName[10]
是0,但debug模式下却是-2。
为了避免类似问题,可以在strncpy_s
后加一句:
memset(fileName + name.length(), 0, sizeof(fileName) - name.length());