/* * Versão 1: usa o scanf(" %c", &ch); * Solução um tanto quanto misteriosa... */ #include #define MAXNOME 128 int main() { char nome_arq[MAXNOME]; char ch; printf("Entre com o nome do arquivo: "); scanf("%s", nome_arq); printf("Nome = %s\n", nome_arq); /* Atencao, o '\n' esta no buffer! */ printf("Entre com a direcao: "); scanf(" %c", &ch); /* o espaco antes do %c e' importante */ while (ch != 'f') { printf("Eco: CAR = %c DEC = %d\n", ch, ch); printf("Entre com a direcao: "); scanf(" %c", &ch); /* o espaco antes do %c e' importante */ } printf("Eco: CAR = %c DEC = %d\n", ch, ch); return 0; } /* * Versão 2: lê explicitamente o '\n' */ #include #define MAXNOME 128 int main() { char nome_arq[MAXNOME]; char ch; char barra_n; printf("Entre com o nome do arquivo: "); scanf("%s", nome_arq); printf("Nome = %s\n", nome_arq); /* Atencao, o '\n' esta no buffer! */ scanf("%c", &barra_n); /* limpa o buffer */ printf("Entre com a direcao: "); scanf("%c%c", &ch, &barra_n); /* le ch e limpa o buffer */ while (ch != 'f') { printf("Eco: CAR = %c DEC = %d\n", ch, ch); printf("Entre com a direcao: "); scanf("%c%c", &ch, &barra_n); /* le ch e limpa o buffer */ } printf("Eco: CAR = %c DEC = %d\n", ch, ch); return 0; }