Vérifier si la chaîne contient un autre C

Maintenant, j’ai ce code, mais il a toujours la valeur null

UNICODE_STRING str; char *cmp = "Hello"; RtlInitUnicodeSsortingng (&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?? } 

Pouvez-vous m’expliquer pourquoi strstr dans mon cas toujours nul?

Vous recherchez une chaîne multi-octets dans une chaîne Unicode. Utilisez wcsstr :

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

Vous le cachiez en jetant le char * sur char * .


Vous devriez vraiment poser une autre question pour votre deuxième requête, mais vous pourriez écrire une fonction comme celle-ci:

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

Vous pouvez également utiliser _wcslwr .