C/Visual C - Vaciar buffer de teclado...

   
Vista:

Vaciar buffer de teclado...

Publicado por Daniel (11 intervenciones) el 03/01/2008 19:12:02
Hola a todos
Tengo el siguiente programa que me valida correctamente si en
"apellido" ingreso mas de 15 caracteres, pero si lo hago en cualquiera
de las 2 entradas anteriores, me da por finalizado el mismo.-
Ley po allí que es porque el buffer de teclado no ha sido volcado totalmente
y probé con "cout.flush();" pero continua de la misma manera, me podrías
decir como puedo solucionarlo....?

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
char primer[16],segundo[16],apellido[16];

cout << "Ingrese primer nombre(maximo 15 caracteres).:";
cin.getline(primer,16);

cout << "Ingrese segundo nombre(maximo 15 caracteres):";
cin.getline(segundo,16);

cout << "Ingrse apellido(maximo 15 caracteres).......:";
cin.getline(apellido,16);

strcat(primer," ");
strcat(segundo," ");
strcat(primer,segundo);
strcat(primer,apellido);
cout << "Nombre completo....: " << primer << endl << endl;

system("pause");

return 0;
}

Desde ya muchas gracias por la ayuda que puedas brindarme
un gran abrazo
Daniel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Vaciar buffer de teclado...

Publicado por dai1 (14 intervenciones) el 03/01/2008 21:11:35
Hola daniel,lo que yo habitualmente uso para vaciar el buffer de teclado cuando leo cuando leo cadanas de caracteres es fflush(stdin);

Ej:
char nombre[10];

printf("Introduce un nombre");
fflush(stdin);
gets(nombre);

El fflush(stdin) lo que te hace es limpiar el buffer de teclado cuando das intro despues de haber introducido el nombre.

Espero que te sirva,saludos

Si necesitas mas ayuda mi correo esta ahi,frutiyos@hot estudio programacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vaciar buffer de teclado...

Publicado por Daniel (11 intervenciones) el 03/01/2008 22:22:46
Hola...?
Muchas pero muchas gracias por tú ayuda pero no logro
lo deseado, al ingresar en la variable nombre "RobertoDaniel"
que me aparezca en pantalla "RobertoDan".-
Espero que me puedas ayudar, intento programar en C++
------------------------------------------------------------------------------------
#include <iostream>
#include <string>

using namespace std;

int main()
{
char nombre[10];

cout << "Introduce un nombre";
fflush(stdin);
gets(nombre);
cout << "Escribiste:" << nombre << endl;
system("PAUSE");
return 0;
}
------------------------------------------------------------------------------------
un gran abrazo
Daniel

Nota: la próxima vez que me conteste por favor no pongas mas el correo
a mi disposición, no tenes una idea lo que te puede pedir de ayuda
un autodidacta de 55 años.- (me entendes 55 años, mis conocidos y
amigos nunca se sentaron frente a una compu además a esta edad
ya no estoy para la facultad) voy a hacer de cuenta que no dispongo
de:"Si necesitas mas ayuda mi correo esta ahi,frutiyos@hot estudio programacion" un gran abrazo hermano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vaciar buffer de teclado...

Publicado por JuanC (57 intervenciones) el 04/01/2008 23:16:13
te trunca el ingreso por el 10 usado en
char nombre[10];

tenés que darle más capacidad al buffer (cantidad de caracteres entrada + 1)

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vaciar buffer de teclado...

Publicado por Daniel (11 intervenciones) el 05/01/2008 12:09:35
Hola JuanC...
Muchas gracias por querer ayudarme pero me parece que
no interpretaste bien lo que necesito, de cualquier manera
por lo que pude recabar en distinto foros y en tutoriales lo
que quiero hacer no hay manera si no es por medio de
alguna librería como "conio2.h" y con una función que ya estoy
logrando.- (hay que capturar la tecla pulsada y luego antes de
imprimirla en pantalla podemos elegir que hacer ).-

Un gran saludo a todos
Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vaciar buffer de teclado...

Publicado por Tom (481 intervenciones) el 08/01/2008 15:57:22
La mejor forma (y puede que la única) de vaciar el buffer es leyéndolo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vaciar buffer de teclado...

Publicado por Daniel (11 intervenciones) el 08/01/2008 23:00:16
Hola Tom
Te pido mil disculpas por no poder interpretar lo que
propones, lo que pasa es que hace apenas 1 mes que
estoy con c++ y además soy autodidacta.-
Me podrías dar mas detalles, te lo agradecería mucho
porque es un tema que tengo en por lo menos 5 foros
en todos han tratado de ayudarme pero aparenta no
tener solución.-

A la espera de tu bendita respuesta
un gran abrazo
Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar