4
respostas

como imprimir sequencia de escape de uma array de char?

Tenho o seguinte codigo:

char seq[100];

printf("Enter the chars sequence: ");
fflush(stdin);
gets(seq);

printf("%s", seq);

A minha intenção é que, serão impressas as sequencias de escape também. Segue exemplo:

Enter the chars sequence:    //execução do printf
asdfbuiowhtbnj    \n\n\n    asdvasfd\n\nafbebxz    //o meu input
/*
expectativa...
*/
asdfbuiowhtbnj    


    asdvasfd

afbebxz

Mas na prática o programa imprime os '\n' e não as novas linhas.

Alguem consegue me ajudar?

4 respostas

Olá Gal,

isso acontece pois você está lendo caractere por caractere utilizando o gets.

Para que as sequências de escape sejam impressas, seria necessário que para cada caractere lido, você checasse se ele é um '\' e, caso fosse, lesse o próximo caractere de forma diferente e imprimisse a sequência correspondente à ele, por exemplo uma quebra de linha caso o caractere 'n' fosse lido ou uma tabulação caso o caractere 'd' fosse lido.

Então, tem alguma maneira de ler e imprimir como uma sequencia? ou vou ter que fazer o switch para todas as sequencias de escape manualmente? Tentei fazer isso para a impressão:

       if(seq[i] == '\\'){
            char es = seq[i] + seq[i+1];
            printf(es);
            i++;
        } else {
            printf("%c", seq[i]);
        }

Mas continua imprimindo o \n.

if(seq[i] == '\'){
    printf("\\%c",seq[i+1]);
    i+=2;
 }

Boa galera!