
Ayuda con enter en el buffer
Publicado por Diego (150 intervenciones) el 18/04/2014 20:33:02
Buenas tardes, tengo un ejercicio que no logro realizar correctamante, dice así:
Escriba un programa que copie caracteres del teclado en la pantalla remplazando cada
ocurrencia de barra invertida por \\, cada tabulación por \t, cada enter por \n. Emplee getchar().
# Por ejemplo. Si ingresa:
hola mundo
chau mundo\
# Debe imprimir:
hola\tmundo\nchau mundo\\
Este es código que realizé:
No logro hacer que cuando se ingrese ENTER no se libere el buffer y siga ingresando caracteres hasta que llegue el EOF; Basicamente lo que quiero es que cuando se presiose enter siga leyendo y no imprima todo hasta que llegue el EOF, para que quede como la carga del ejemplo.
Quizás no me expresé bien, de ser así trataré de reformularlo.
Les agradezco su tiempo.
Escriba un programa que copie caracteres del teclado en la pantalla remplazando cada
ocurrencia de barra invertida por \\, cada tabulación por \t, cada enter por \n. Emplee getchar().
# Por ejemplo. Si ingresa:
hola mundo
chau mundo\
# Debe imprimir:
hola\tmundo\nchau mundo\\
Este es código que realizé:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
int main()
{
int enter, barra_inv, tab, n, t;
barra_inv = 92;
enter = 0x0A;
tab = 9;
n = 110;
t = 116;
int carac_act;
while ((carac_act = getchar()) != EOF)
{
if (carac_act == barra_inv)
{
putchar(barra_inv);
putchar(barra_inv);
}
else
{
if (carac_act == tab)
{
putchar(barra_inv);
putchar(t);
}
else
{
if (carac_act == enter)
{
putchar(barra_inv);
putchar(n);
}
else
{
putchar(carac_act);
}
}
}
}
return 0;
}
No logro hacer que cuando se ingrese ENTER no se libere el buffer y siga ingresando caracteres hasta que llegue el EOF; Basicamente lo que quiero es que cuando se presiose enter siga leyendo y no imprima todo hasta que llegue el EOF, para que quede como la carga del ejemplo.
Quizás no me expresé bien, de ser así trataré de reformularlo.
Les agradezco su tiempo.
Valora esta pregunta


0