使用str(i)cmp和wcs(i)cmp时容易翻车的情况
这些函数属于非常基本的C库函数,学编程超过3天的人都知道。然而很多人不知道的是,这些函数不会检查字符串指针的有效性,如果字符串指针无效,就翻车了。比如以下程序:void main(){
WCHAR s1[] = L"s1";
WCHAR s2[] = L"s2";
__try
{
printf("%ld\n",wcsicmp(NULL,NULL));
}
__except(1)
{
puts("exception.");
}
__try
{
printf("%ld\n",wcsicmp(s1,NULL));
}
__except(1)
{
puts("exception.");
}
__try
{
printf("%ld\n",wcsicmp(NULL,s1));
}
__except(1)
{
puts("exception.");
}
__try
{
printf("%ld\n",wcsicmp(s1,s2));
}
__except(1)
{
puts("exception.");
}
system("pause");
}输出的结果是:exception.
exception.
exception.
-1可见如果输入指针无效,马上翻车。
页:
[1]