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

Me guarda mal una cadena ingresada por teclado

Estas en el tema de Me guarda mal una cadena ingresada por teclado en el foro de C/C++ en Foros del Web. Hola.. Estoy con un problema y no logro dar con la solución.. La idea es tener un arreglo en donde se guardan datos de Personas. ...
  #1 (permalink)  
Antiguo 11/09/2009, 18:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 2
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Me guarda mal una cadena ingresada por teclado

Hola.. Estoy con un problema y no logro dar con la solución..
La idea es tener un arreglo en donde se guardan datos de Personas. Y que a traves del numero de Documento se pueda modificar el valor que tiene la variable "domicilio"

Código:
# include <stdio.h>
# include <conio.h>
# include <iostream.h> 
# include <string.h>

struct rPersona{
       char* Nombre,*Apellido,*Domicilio;         
       int Dni;
};

void IngresoValores(struct rPersona *vector){
     rPersona aux;
     aux.Nombre = "Diego";
     aux.Apellido = "Totti";         
     aux.Domicilio = "Calle 912";         
     aux.Dni = 222;
     vector[0] = aux;

     aux.Nombre = "Marcos";
     aux.Apellido = "TItto";         
     aux.Domicilio = "Calle 1145";         
     aux.Dni = 888;
     vector[1] = aux;
}

void Buscar(struct rPersona *vector){
     char *domicilio;
     int dni;
     rPersona aux, nuevo;
     printf("Ingrese el DNI a buscar: ");
     scanf("%i",&dni);    
     for (int i=0; i<5; i++){
         aux = vector[i];
         if (aux.Dni == dni){
            printf("Dni encontrado...\n");
            nuevo.Nombre = aux.Nombre;
            nuevo.Apellido = aux.Apellido;
            nuevo.Dni = aux.Dni;
            printf("INGRESE EL NUEVO DOMICILIO: ");
            scanf("%s", domicilio);            
            nuevo.Domicilio =  domicilio;
            vector[i] = nuevo;
            printf("Domicilio actualizado!!!\n");
            getch();         
         }
     }         
}
El problema es que cuando lo muestro, una vez que lo modifique, me muestra caracteres raros en el domicilio modificado. No entiendo como hacer para que la linea: scanf("%s", domicilio) me tome bien el domicilio.

Que estoy haciendo mal?? Estoy definiendo mal alguna variable o la estructura de datos??

Muchas Gracias!!!
  #2 (permalink)  
Antiguo 12/09/2009, 00:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Me guarda mal una cadena ingresada por teclado

domicilio es un puntero indefinido ahi (char *domicilio;), o usas un array o reservas memoria dinamicamente para domicilio.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 20:29.