elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al leer cadenas con espacios [C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al leer cadenas con espacios [C++]  (Leído 21,736 veces)
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Problema al leer cadenas con espacios [C++]
« en: 19 Mayo 2011, 18:30 pm »

Veréis, tengo esta función:

Código:
void Farmacia::meterMedicamento(){
   string acodigo;
    char anombre[50];
    char aformato[50];
    string alaboratorio;
    float apvp;
   Casilla *cas;
    int unidades;
   
    cout << "Inserte el nombre del medicamento: ";
    cin>>anombre;
    do{
    cout<<"Inserte el código de 7 dígitos: ";
    cin>>acodigo;
    }while(acodigo.length()!=7);
    cout<<"Inserte el formato del medicamento: ";
    //cin>>aformato;
    fflush(stdin);
    fgets(aformato,50,stdin);
    aformato[strlen(aformato)-1]='\0';
    cout<<"Inserte el laboratorio: ";
    cin>>alaboratorio;
    cout<<"Inserte el precio: ";
    cin>>apvp;
    cout<<"Indique las unidades que habrá en el stock: ";
    cin>>unidades;

    if(unidades>=0){
   Medicamento med(acodigo, anombre, aformato, alaboratorio, apvp);
   this->nuevoMedicamento(&med);
   cas = this->casillaVacia();
   this->colocarMedicinaEstante(med.verCodigo(), cas, unidades);
    }

Y cuando pasa por leer el formato del medicamento, se lo salta directamente y no puedo introducírselo.

Me podéis decir qué está mal?

Gracias de antemano.  :)


En línea

d00ze13

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: Problema al leer cadenas con espacios [C++]
« Respuesta #1 en: 19 Mayo 2011, 19:00 pm »

leete este post que tienes mas abajo a ver si te puede solventar tus dudas
http://foro.elhacker.net/programacion_cc/guarda_cadenas_con_espacios_como-t327983.0.html


En línea

Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Problema al leer cadenas con espacios [C++]
« Respuesta #2 en: 19 Mayo 2011, 19:12 pm »

Lo he puesto como dicen en el post que has puesto, pero se sigue saltando la lectura del parámetro. A qué se puede deber?
En línea

Lx

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Problema al leer cadenas con espacios [C++]
« Respuesta #3 en: 20 Mayo 2011, 03:49 am »

Mmm.. Probé tu código y me lee todo ...

Pero si no es así contigo prueba esto:

Código
  1. void Farmacia::meterMedicamento(){
  2.   string acodigo;
  3.    char anombre[50];
  4.    char aformato[50];
  5.    string alaboratorio;
  6.    float apvp;
  7.   Casilla *cas;
  8.    int unidades;
  9.  
  10.    cout << "Inserte el nombre del medicamento: ";
  11.    cin>>anombre;
  12.    do{
  13.    cout<<"Inserte el código de 7 dígitos: ";
  14.    cin>>acodigo;
  15.    }while(acodigo.length()!=7);
  16.    while(getchar()!='\n');
  17.    cout<<"Inserte el formato del medicamento: ";
  18.    cin.getline( aformato, 50);
  19.    cout<<"Inserte el laboratorio: ";
  20.    cin>>alaboratorio;
  21.    cout<<"Inserte el precio: ";
  22.    cin>>apvp;
  23.    cout<<"Indique las unidades que habrá en el stock: ";
  24.    cin>>unidades;
  25.    while(getchar()!='\n');
  26.  
  27.    if(unidades>=0){
  28.   Medicamento med(acodigo, anombre, aformato, alaboratorio, apvp);
  29.   this->nuevoMedicamento(&med);
  30.   cas = this->casillaVacia();
  31.   this->colocarMedicinaEstante(med.verCodigo(), cas, unidades);
  32.    }

Cada vez que dejes de hacer lecturas cin o scanf debes poner while(getchar()!='\n') para limpiar la basura del buffer que deja esas funciones de lectura.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guarda cadenas con espacios - como? « 1 2 »
Programación C/C++
d00ze13 10 22,440 Último mensaje 19 Mayo 2011, 09:02 am
por d00ze13
Leer cadenas tipo string con espacios
Programación C/C++
luisda2994 4 20,740 Último mensaje 24 Julio 2012, 19:55 pm
por luisda2994
problema con leer e interpretar txt
Programación C/C++
arthu16 3 2,693 Último mensaje 12 Septiembre 2013, 18:50 pm
por eferion
Problema al leer cadena con espacios?
Programación C/C++
1mpuls0 7 6,056 Último mensaje 2 Abril 2014, 18:42 pm
por amchacon
problema al leer y almacenar cadenas en C
Programación C/C++
JosselynGreen 2 2,673 Último mensaje 2 Diciembre 2019, 00:32 am
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines