Wcsstr没有区分大小写

时间:2012-03-12 12:14:10

标签: c windows driver case-insensitive

是否有人知道如何在C上使用wcsstr而不区分大小写?如果这个重要,我将在内核驱动程序中使用它。

1 个答案:

答案 0 :(得分:4)

如果您在Windows下进行编程,则可以使用StrStrI()功能。

您无法在内核驱动程序中使用它,因此您必须write it by your own。在该示例中,使用toupper()并且应该用RtlUpcaseUnicodeChar替换(如Rup所指出的)。总结一下,你需要这样的东西:

char *stristr(const wchar_t *String, const wchar_t *Pattern)
{
      wchar_t *pptr, *sptr, *start;

      for (start = (wchar_t *)String; *start != NUL; ++start)
      {
            while (((*start!=NUL) && (RtlUpcaseUnicodeChar(*start) 
                    != RtlUpcaseUnicodeChar(*Pattern))))
            {
                ++start;
            }

            if (NUL == *start)
                  return NULL;

            pptr = (wchar_t *)Pattern;
            sptr = (wchar_t *)start;

            while (RtlUpcaseUnicodeChar(*sptr) == RtlUpcaseUnicodeChar(*pptr))
            {
                  sptr++;
                  pptr++;

                  if (NUL == *pptr)
                        return (start);
            }
      }

      return NULL;
}