Некорректно работает шифрование?

Сейчас пытаюсь реализовать Шифр Цезаря. При попытке зашифровать текст, написанный на кириллице, в out-text записывается всё без изменений. При попытке зашифровать латиницу всё работает корректно ( предварительно изменив немного код, подстроив его под латиницу ). Сначала я предположил, что дело всё в том, что перменная "c" имеет тип char, но при смене char на wchar_t ситуация не изменилась.

ОС - Windows 10, Visual Studio Code, использую компилятор MinGW. Может эта информация поможет.

#include <stdio.h>
#include <locale.h>

#define nUKR 33 // Кол-во букв в алфавите

void encrypt(int n)
{
    int marker;
    wchar_t c;
    FILE *fp1, *fp2;
    fp1 = fopen("in-text.txt", "r");

    if(fp1){
        c = getc(fp1);
        fp2 = fopen("out-text.txt", "w");

        while(!feof(fp1)) 
        {
            marker = 0;

            if(c >= 'А' && c <= 'Я'){ 
                c = c + (n % nUKR);
                if(c > 'Я') 
                    c = 'А' + ( c - 'Я') - 1;
                fprintf(fp2, "%c", c);
                marker = 1;
            }
            if(c >= 'а' && c <= 'я'){ 

                c = c + (n % nUKR);

                if(c > 'я') 
                {
                    c = 'а' + ( c - 'я') - 1;
                }
                fprintf(fp2, "%c", c);
                marker = 1;
            }


            if(!marker) 
            {
                fprintf(fp2, "%c", c);
            }

            c = getc(fp1);
        }

        printf("\aThe encryption was successful. The encrypted data is in the file - out-text.txt.\n");
        fclose(fp1);
        fclose(fp2);

    }
    else 
    {
        printf("\aFile in-text.txt doesn't exist...\n");
    }

}

int main(void)
{
    int k;
    char c;

    setlocale(LC_ALL, "");

    printf("Caesar's cipher\nEnter the key value: ");
    scanf("%d", &k);
    getchar();

    if(k >= 1){

        printf("Encrypt text in-text.txt? (Y/N) ");

        scanf("%c", &c);

        if(c == 'Y' || c == 'y'){ 
            encrypt(k);
        }

        printf("Decrypt text from out-text.txt? (Y/N) ");

        getchar(); 

        scanf("%c", &c);

        if(c == 'Y' || c == 'y'){ 
            decipher(k);
        }

        getchar(); 
        getchar();
    }

    return 0;
}

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