c - Wcsstr ingen tilfælde følsomhed

Indlæg af Hanne Mølgaard Plasc

Problem



Er der nogen, der ved, hvordan man bruger wcsstr uden nogen følsomhed på C? Hvis dette er vigtigt, vil jeg bruge det i kernel driver.

Bedste reference


Hvis du programmerer under Windows, kan du bruge funktionen StrStrI(). [6]


Du kan ikke bruge det i en kernel driver, så du skal skrive det alene. I dette eksempel bruges toupper() og skal erstattes med RtlUpcaseUnicodeChar (som Rup har påpeget). du har brug for noget som dette: [7]


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;
}