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

Problema con cin / cin.getline()

Estas en el tema de Problema con cin / cin.getline() en el foro de C/C++ en Foros del Web. Hola amigos, tengo un proyecto de la universidad y me he encontrado con un problemita tengo el codigo siguiente : Código: /* Datos del Vehiculo ...
  #1 (permalink)  
Antiguo 07/12/2010, 08:49
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Problema con cin / cin.getline()

Hola amigos, tengo un proyecto de la universidad y me he encontrado con un problemita tengo el codigo siguiente :

Código:
/*
Datos del Vehiculo
Solicita los datos del vehiculo

Esta estructura esta declarada en el archivo cabecero "proyecto.h"
 struct Vehiculo{
	char placa[6];
	char marca[10];
	char modelo[10];
	char color;
	unsigned long cedula;
 };

*/

#include "proyecto.h"

Vehiculo datosVehiculo(unsigned long cedula){
	Vehiculo v; // declaracion de una estructura tipo vehiculo ya deficina en el proyecto.h

	
	
	// solicita los datos del vehiculo
	cout<< "\n\n\t\t  Vehiculo \n\n"
		<<"=> Ingrese los datos del Vehiculo \n\n";		
	
	cout<<"\t   Placa: ";	
	cin.getline(v.placa, 6);// debo colocar uno mas grande que el campo, de lo contrario solo lee 4 caracteres y no lee los datos siguientes	
	cin.seekg(0, ios::end);
    cin.ignore(100,'\n');

	cout<<"\t   Marca: ";
	cin.getline(v.marca,10);

	
	cout<<"\t  Modelo: ";
	cin.getline(v.modelo,10);

	
	cout<<"\t   Color: ";
	cin.getline(v.color,3);
	
	
	v.cedula = cedula;
	
	cout<< endl << endl;
	
	fstream Escr_Lect("Vehiculo.bin", ios::out | ios::in | ios::binary | ios::app);
	
	Escr_Lect.write((char*)(&v), sizeof(Vehiculo));
	
	cout <<"Placa: " << v.placa;
	
	//prueba del registro creado
	
	Vehiculo v2;
	
	unsigned long longarchivo(Escr_Lect.tellg());
	Escr_Lect.seekg( longarchivo - sizeof(Vehiculo));
	//Escr_Lect.seekg(0, ios::beg);
	Escr_Lect.read( (char*)(&v2), sizeof(Vehiculo));
	
	cout<<"\n Placa : " << v2.placa
		<<"\n Marca : " << v2.marca
		<<"\n Modelo: " << v2.modelo
		<<"\n Color : " << v2.color
		<<"\n Cedula: " << v2.cedula 
		<< endl << endl;
	
	
	// retorna el registro del vehiculo en una estructura tipo Vehiculo
	return v;

}

con este codigo obtengo la pantalla siguiente:
--------------------------------------------------------------
Código:
  Vehiculo 

=> Ingrese los datos del Vehiculo 

	   Placa: L4423
                                          // qui debo precionar enter 2 veces, no kiero q esto pase
	   Marca: Marca
                                        // qui debo precionar enter 2 veces, no kiero q esto pase
	  Modelo: Modelo
                                       // qui debo precionar enter 2 veces, no kiero q esto pase
	   Color: RO

//esta es la salida 

Placa: L4423Marca            
 Placa : L4423Marca         
 Marca : Marca
 Modelo: Modelo
 Color : RO
 Cedula: 2240031513

Presione una tecla para continuar . . . 
---------------------------------------------------------
Al introducir los datos primero imprimo la placa.
aqui ya pueden observar que la placa se guarda junto con la marca.

luego escribo la estructura en el archivo, leo el ultimo registro y lo imprimo y tambien esta pasando lo de la placa y la marca unidos en un mismo campo.

espero alguien pueda ayudarme pronto.

saludos,

Etiquetas: cin, cin.getline()
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 04:36.