Си. Посимвольное сравнивание строк с кириллицей.(без учета регистра)

В задаче требуется проверить две строки на идентичность(без учета регистра). Моя функция с латиницей работает, так же работает с кириллицей, но регистр при этом учитывается. Я так понял, что это из-за того, что 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

Ответ:

  1. toupper/tolower - можно заменить на towlower/towupper
  2. strlen - заменить на wcslen
→ Ссылка