Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2010, 08:49
jmordan
 
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,