Си. Посимвольное сравнивание строк с кириллицей.(без учета регистра)
В задаче требуется проверить две строки на идентичность(без учета регистра). Моя функция с латиницей работает, так же работает с кириллицей, но регистр при этом учитывается. Я так понял, что это из-за того, что toupper()/tolower() не работает с кириллицей.
ВОПРОС: Как заставить функцию toupper()/tolower() работать с кириллицей?
setlocale() пробовал. Система Linux Ubuntu, компилятор gcc, если важно.
int is_sent_unique(struct Sentence** txt, struct Sentence* sent, int n){
for(int i = 0; i < n; i++){
int k = 0;
for(int j = 0; j < strlen(sent->str); j++){
if (toupper(txt[i]->str[j]) == toupper(sent->str[j]))
k++;
}
if(k == strlen(sent->str))
return 0;
}
return 1;
}
Ответы (1 шт):
Автор решения: Dmtrstk
→ Ссылка
Ответ:
toupper/tolower- можно заменить наtowlower/towupperstrlen- заменить наwcslen