2012-03-11 22 views
0

が含まれている場合、今、私はこのコードを持っているが、それは常にnullチェック文字列が別のC

UNICODE_STRING str; 
char *cmp = "Hello"; 

RtlInitUnicodeString (&str, L"Hello world!"); 

if((strstr((char *)str.Buffer, cmp)) != NULL) 
{ 
    // cmp founded in str. 
} 
else 
{ 
    // cmp not founded in str. Always here, but why?? 
} 

を設定するには、あなたは私の場合は理由はstrstrは常にnullを私に説明できますか?

答えて

0

マルチバイト文字列をUnicodeで検索しています。 wcsstrを使用します。

wchar * cmp = L"Hello"; 
wcsstr(str.Buffer, cmp); 

あなたはchar *にキャストすることにより、これを隠しました。


あなたは本当にあなたの2番目の要求のための別の質問をする必要がありますが、このような機能を記述します:

void make_string_lower(WCHAR * str) 
{ 
    while(str[0] != '\0') { 
    if(iswalpha(str[0] && !iswlower(str[0]))) { 
     str[0] = towlower(str[0]); 
    } 

    str++; 
    } 
} 

また_wcslwrを使用します。

+0

これを修正するにはどうすればよいですか? – user1262425

+1

答えに書いたコードを試してみてください。 –

+0

(offtop)WRSH文字列を小文字に置き換えることができる関数を教えてください。 – user1262425

関連する問題