c – how to make inputs work well with special characters using the locale.h library?

for some reason the function setlocale(LC_ALL, “English”) doesn’t work when using an input function,(getchar, scanf, fgets,..), to get a special character, (Ç, ã, õ, é,…).

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

    int cont = 0;
    int soma = 0;
    char resposta;

    int main (void){
    
        int i = 0;
        char caractere;
        struct cadastro {
            char cpf(20);
            int idade;
            char sexo;
            char nome(100);
        };
    
        setlocale(LC_ALL, "Portuguese");
        
        void grauRisco (void);
    
        struct cadastro paciente;
    
        printf ("Faça o cadastro n");
        printf ("Digite seu cpf: n");
        scanf (" %s", &paciente.cpf);
        fflush(stdin);
        printf ("Digite seu nome completo: n");
        do {
            caractere = getchar();
            paciente.nome(i) = caractere;
            ++i;
        } while (caractere != 'n');
        paciente.nome(i - 1) = '';
        fflush(stdin);
        printf ("Digite sua idade: n");
        scanf (" %i", &paciente.idade);
        fflush(stdin);
        printf ("Digite seu sexo: m- masculino, f- feminino n");
        scanf (" %c", &paciente.sexo);
        fflush(stdin);
        system("cls");
    
        printf("CPF: %s n", paciente.cpf);
        printf ("NOME: %s n", paciente.nome);
        printf ("IDADE: %i n", paciente.idade);
        printf ("SEXO: %c n", paciente.sexo);
    
        printf ("Responda as perguntas para saber qual ala deve-se dirigir n");
        printf ("Tem Febre? s-sim, n-nao n");
        grauRisco();
        printf ("Tem dor de cabeça? s-sim, n-não  n");
        grauRisco();
        printf ("Tem secreção nasal ou espirros? s-sim, n-não  n");
        grauRisco();
        printf ("Tem dor/irritação na garganta? s-sim, n-não  n");
        grauRisco();
        printf ("Tem tosse seca? s-sim, n-não n");
        grauRisco();
        printf ("Tem dificuldade respiratória? s-sim, n-não  n");
        grauRisco();
        printf ("Tem dores no corpo? s-sim, n-não  n");
        grauRisco();
        printf ("Tem diarréia? s-sim, n-não  n");
        grauRisco();
        printf ("Esteve em contato, nos ultimos 14 dias, com um caso diagnosticado com COVID-19? 
    s-sim, n-não  n");
        grauRisco();
        printf ("Esteve em locais com grande aglomeração? s-sim, n-não  n");
        grauRisco();
        system("cls");
    
        printf ("Total de pontos %i n", soma);
        if (soma <= 9) {
            printf ("Seu risco para Covid-19 é BAIXO. Dirija-se para à ala de risco baixo.");
        } else
            if (soma > 9 && soma <= 19) {
                printf ("Seu risco para Covid-19 é MEDIO. Dirija-se para à ala de risco médio");
            } else
                if (soma >19) {
                    printf ("Seu risco para Covid-19 é ALTO. Dirija-se para à ala de risco alto");
                }
            
        FILE *arquivo;
        arquivo = fopen ("pacientes.txt","a");
        fprintf (arquivo, "---------------------------n");
        fprintf (arquivo, "CPF: %s n", paciente.cpf);
        fprintf (arquivo, "NOME: %s n", paciente.nome);
        fprintf (arquivo, "IDADE: %i n", paciente.idade);
        fprintf (arquivo, "SEXO: %c n", paciente.sexo);
        fprintf (arquivo, "Total de pontos %i n", soma);
        fprintf (arquivo, "---------------------------n");
        fclose (arquivo);   
    
        return 0;
    }

    void grauRisco (void) {
    
        scanf (" %c", &resposta);
        fflush(stdin);
    
        switch (resposta) {
            case 's':
                cont = cont +1;
            
                if (cont == 1) {
                    soma = soma + 5;
                } else 
                    if (cont == 2) {
                        soma = soma + 1;
                    } else
                        if (cont == 3) {
                            soma = soma + 1;
                        } else
                            if (cont == 4) {
                                soma = soma + 1;
                            } else
                                if (cont == 5) {
                                    soma = soma + 3;
                                } else
                                    if (cont == 6) {
                                        soma = soma + 10;
                                    } else 
                                        if (cont ==7) {
                                            soma = soma + 1;
                                        } else
                                            if (cont == 8) {
                                                soma = soma + 1;
                                            } else
                                                if (cont == 9) {
                                                    soma = soma + 10;
                                                } else
                                                    if (cont == 10) {
                                                        soma = soma + 3;
                                                    }
                break;
            case 'n':
                break;
            default:
                printf("A resposta não é valida. digite s-sim, n-não. n");
                grauRisco();
                break;
        }
    
        return ;
    }
```