Dev - C++ - cual es el comando que se debe de meter para que el programa no se salte el gets?

 
Vista:
sin imagen de perfil

cual es el comando que se debe de meter para que el programa no se salte el gets?

Publicado por saul (5 intervenciones) el 29/06/2017 01:41:15
hola buenas tarde me podrian decir cual es el comando que se debe de meter para que el programa no se salte el gets???
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
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

cual es el comando que se debe de meter para que el programa no se salte el gets?

Publicado por Dionicio (57 intervenciones) el 29/06/2017 23:50:13
No es aconsejable el uso de gets debido a que sobrescribe memoria que no tiene asignada la variable si la cadena es muy extensa, es mejor utilizar fgets();

1
fgets(<Nombre_cadena>,<tamaño>,stdin<(entrada estándar, el teclado)>);

Lo siguiente sería limpiar el buffer o memoria intermedia para que no se salte la siguiente lectura. En algunos foros puedes encontrar personas que usen fflush(stdin); lo cual está mal ya que fflush trabaja con flujos de salida. Yo lo hago de la siguiente manera, lo hago en una función para más facilidad:

1
2
3
4
void limpiar_buffer(void){
	int buff;
	while((buff=getchar()) != '\n' && buff != EOF);
}
Para implementarlo sería más o menos de la siguiente manera:

1
2
3
4
5
6
        //Leer una cadena
	fgets(<Nombre_cadena>,<tamaño>,stdin<(entrada estándar, el teclado)>);
	//limpiar la memoria intermedia
	limpiar_buffer();
	//Leer otra cadena
	fgets(<Nombre_cadena>,<tamaño>,stdin<(entrada estándar, el teclado)>);

Espero te sirva, un saludo!
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