Tesla.Angela 发表于 2020-2-24 00:55:14

使用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]
查看完整版本: 使用str(i)cmp和wcs(i)cmp时容易翻车的情况