Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problemas con la funcion gets() en c / c++

Estas en el tema de problemas con la funcion gets() en c / c++ en el foro de C/C++ en Foros del Web. Hola, resulta que estoy almacenando una cadena que el usuario digita para guardarla en un fichero de texto, pero cuando llega a la parte en ...
  #1 (permalink)  
Antiguo 31/05/2012, 22:51
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta problemas con la funcion gets() en c / c++

Hola, resulta que estoy almacenando una cadena que el usuario digita para guardarla en un fichero de texto, pero cuando llega a la parte en la que el usuario debe digitar avanza a lo que sigue y no me deja digitar y lo raro es que si ejecuto solo la funcion escribir() si me deja digitar pero cuando ejecuto primero la funcion titulo() no me deja escribir este es mi codigo, gracias

Código PHP:
using namespace std;
char cadena[100];
FILE *fichero;
void escribir()
{
//
    
puts("Escriba un texto:");
    
gets(cadena);
    
puts("El texto escrito es:");
    
puts(cadena);
//
}
void titulo()
{
string titulo ,nombre;

printf("Escriba el titulo del fichero\n");
scanf("%s",titulo.c_str());
nombre ".txt";
nombre.insert(0,titulo.c_str());
printf("%s\n",nombre.c_str());
fichero fopen(nombre.c_str(),"w");
}
int main()
{
//asi no me deja digitar
titulo();
escribir();
//si solo es escribir() y no agrego la funcion titulo si me deja escribir
fputs(cadena,fichero);
system("PAUSE");

  #2 (permalink)  
Antiguo 31/05/2012, 23:09
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: problemas con la funcion gets() en c / c++

Hola! el problema es q estas combinando scanf con gets. En titulo() usas scanf y este deja el enter en el bufer; luego cuando llamas a escribir() usas gets, el cual toma el enter del bufer sin dejarte ingresar nada. Tenes q usar dos gets o dos scanf

Saludos
  #3 (permalink)  
Antiguo 01/06/2012, 02:01
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problemas con la funcion gets() en c / c++

O, a lo que dice cesar, utiliza un getchar() después de la función scanf y así se traga el salto de línea.

La otra solución más elegante que propuso alguien en otro hilo es meter esta función después de cada scanf:

Código C:
Ver original
  1. flush_stdin()
  2. {
  3.    int ch;
  4.    while( (ch = getchar()) != '\n' && ch != EOF );
  5. }
  #4 (permalink)  
Antiguo 01/06/2012, 07:40
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: problemas con la funcion gets() en c / c++

ah gracias eso no lo sabia entonces asunto arreglado, les agradezco mucho saludos

Etiquetas: cadenas_caracteres, fgets, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.