Как прочитать строку с русским алфавитом?

Задача такова: дана строка длиной не более 100 символов, если есть повторяющиеся ПОДРЯД, нужно сделать так, чтобы таковых не было, т.е. оставить только один символ из ряда повторяющихся. Код работает при условии, что человек вводил латиницу и цифры, а если вводил русские буквы, ничего не работает. Что делать?

#include<stdio.h>
#include<string.h> 

int main()
{
    char stroka[100];
    scanf("%100[^\n]", stroka);
    int n = 0;
    int dlina = 0;
    dlina = strlen(stroka);
    while (n<dlina) {
        if (stroka[n]==stroka[n+1]) {
            stroka[n] = '~';
            
        }
        
        n++;
    }
    dlina = strlen(stroka);
    for (int i=0; i<dlina; i++) {
        if (stroka[i]!='~'){
            printf("%c", stroka[i]);
        }
       
    }
    
    return 0;
}

Ответы (1 шт):

Автор решения: Вася Пупкин

Спасибо всем! Проблема с была не с русским алфавитом) Оставлю здесь свой код, может кому-то пригодится :) Еще раз задание: В стандартный поток ввода подается строка, состоящая из символов, длиной не более 100 символов. Далее входной поток заканчивается. Необходимо вывести в стандартный поток вывода строку, в которой отсутствуют одинаковые подряд идущие символы: если таковые есть, то заменить всю группу идующих подряд одинаковых на один символ: 'sss' -> 's'. код:

#include<stdio.h>
#include<string.h> 

int main()
{
    char stroka[100];
    scanf("%100[^\n]", stroka);
    
    int i = 0;
    int dlina = strlen(stroka);
     
    int p = 0;
    
    while (i<dlina) {         
        
        if (stroka[i]!=stroka[i+1]) {
            printf("%c", stroka[i]);
            
        } 
        
        else {
            printf("%c", stroka[i]); 
            p = i;
            int n = 0;
            
            while ((stroka[p] == stroka[p+1]) && (p<100)) {
                n++; 
                p++; 
            }
            i += n;
            
        }
        i++;
       
    }
    
    return 0;
}
→ Ссылка