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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda leer cadenas y guardarlas en una sola variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda leer cadenas y guardarlas en una sola variable  (Leído 1,503 veces)
rulax01

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda leer cadenas y guardarlas en una sola variable
« en: 20 Noviembre 2014, 01:54 am »

Estoy haciendo un programa con estructuras y a la hora de querer guardar un nombre cuando se ingresar un espacio lo guarda en la siguiente variable 



Código:
#include <iostream>
#include<windows.h>

using namespace std;

struct cliente {
char nombre[];
int telefono;
char domicilio[];
char articulo[15];
char marca[10];
char modelo[10];
char numser[25];
char dano[];

cliente *next;
};

void insertar(void)
{
    cliente *nuevo = new (cliente);

if (nuevo == NULL )
    cout << "No hay memoria suficiente" << endl;
else{
cout << "Nombre del cliente: " ;
cin >> nuevo ->nombre;
cout << "Telefono: " ;
cin >> nuevo->telefono;
cout << "Domicilio: " ;
cin >> nuevo->domicilio;
cout << "Articulo: " ;
cin >> nuevo->articulo;
cout << "Marca: " ;
cin >> nuevo->marca;
cout << "Modelo: " ;
cin >> nuevo->modelo;
cout << "Numero de Serie: " ;
cin >> nuevo->numser;
cout << "Dano reportado: " ;
cin >> nuevo->dano;
nuevo -> next = NULL;
}

if(LISTA ==NULL){
LISTA = nuevo;
} else {
cliente *tempo = LISTA;
while( tempo->next != NULL)
tempo= tempo -> next;
tempo->next = nuevo;

}
}


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda leer cadenas y guardarlas en una sola variable
« Respuesta #1 en: 20 Noviembre 2014, 02:34 am »

Estoy haciendo un programa con estructuras y a la hora de querer guardar un nombre cuando se ingresar un espacio lo guarda en la siguiente variable
Eso se debe a que el operador ">>" lee y almacena una palabra. Para solucionarlo debes leer la linea de texto completa mediante la función std::istream::getline teniendo cuidado del uso intercalado del operador ">>" y la mentada función, la solución a ello se encuentra en la base de los foros, solo es cuestión de utilizar su motor de búsqueda.

Otros cambios que se deben realizar al programa son:
* No es necesario incluir el encabezado <windows.h>.
* Falta indicar el numero de elementos de los campos "nombre", "domicilio" y "dano".
* Al reservar memoria mediante new los paréntesis están de mas, eliminalos.
* Para conocer si un puntero es nulo lo políticamente correcto en C++ es la comparación contra cero (en lugar de la macro NULL).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
rulax01

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda leer cadenas y guardarlas en una sola variable
« Respuesta #2 en: 20 Noviembre 2014, 19:24 pm »

Sigo sin poder leerlas, cuando corro el programa no me deja ingresarle un valor
Posdata el windos.h lo dejo por que en otra funcion  utilizo system pause y cls 

Código:
#include <iostream>
#include <windows.h>


using namespace std;

struct cliente {
char nombre[25];
int telefono;
char domicilio[50];
char articulo[15];
char marca[10];
char modelo[10];
char numser[25];
char dano[125];

cliente *next;
};

void insertar(void)
{
    cliente *nuevo = new cliente;

if (nuevo == NULL )
    cout << "No hay memoria suficiente" << endl;
else{
std::cout << "Nombre del cliente: ";
  std::cin.getline (nuevo->nombre,25);
cout << "Telefono: " ;
cin >> nuevo->telefono;
std::cout << "Domicilio: " ;
std::cin.getline  (nuevo->domicilio,50);
cout << "Articulo: " ;
cin >> nuevo->articulo;
cout << "Marca: " ;
cin >> nuevo->marca;
cout << "Modelo: " ;
cin >> nuevo->modelo;
cout << "Numero de Serie: " ;
cin >> nuevo->numser;
std::cout << "Dano reportado: " ;
std::cin.getline (nuevo->dano,125);
nuevo -> next = NULL;
}

if(LISTA ==NULL){
LISTA = nuevo;
} else {
cliente *tempo = LISTA;
while( tempo->next != NULL)
tempo= tempo -> next;
tempo->next = nuevo;

}
}
En línea

zShackra

Desconectado Desconectado

Mensajes: 59


Ver Perfil WWW
Re: Ayuda leer cadenas y guardarlas en una sola variable
« Respuesta #3 en: 21 Noviembre 2014, 00:49 am »

La función system, pertenece a la biblioteca estándar cstdlib.

Por lo demás, no has seguido todas las sugerencias que rir3760 te ofreció... LISTA no está siquiera declarado, te sugiero, y sin ánimos de ofender... que leas un libro de programación antes de continuar. O si vas a solicitar orientación, que publiques un código más organizado y completo.
« Última modificación: 23 Noviembre 2014, 07:06 am por zShackra » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines