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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion de modificar archivos copia el valor de variable a todos los registros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion de modificar archivos copia el valor de variable a todos los registros  (Leído 1,844 veces)
lifegame

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Funcion de modificar archivos copia el valor de variable a todos los registros
« en: 28 Mayo 2017, 09:24 am »

En esta funcion se supone que al seleccionar un "registro"(el programa busca una variable que coincida con la variable auxiliar(que es dada por el usuario), si la encuentra, se modifican los datos de ese registro, piediendolos uno por uno, pero al final la variable "clave" es copiada a todos los registros. Que esta pasando? :(

Código:
void mod()
{system ("cls");
    ofstream aux;
    ifstream lectura;
    encontrado=false;
    char auxClave[10];


    aux.open("regaux.dat",ios::out);
    lectura.open("reg.dat",ios::in);
    if(aux.is_open() && lectura.is_open()){
        cout<<"Ingresa la clave del producto a Modificar: ";
        cin>>auxClave;
        lectura>>clave;
        while(!lectura.eof()){
            lectura>>nombrep>>prov>>fechac>>precio>>ciudadorigen>>departamento;
            if(strcmp(clave,auxClave)==0){
                encontrado=true;
                cout<<"__________________________"<<endl;
                cout<<"Clave de compra: "<<clave<<endl;
                cout<<"Nombre del producto: "<<nombrep<<endl;
                cout<<"Proveedor: "<<prov<<endl;
                cout<<"Fecha de compra: "<<fechac<<endl;
                cout<<"Precio: "<<precio<<endl;
                cout<<"Ciudad de origen: "<<ciudadorigen<<endl;
                cout<<"Departamento: "<<departamento<<endl;
                cout<<"__________________________"<<endl;
                cout<<"Ingresa el nuevo producto: ";
                cin>>auxnuevonombrep;
                cout<<"Ingresa el nuevo proveedor del registro: ";
                cin>>auxprov;
                cout<<"Ingresa la nueva fecha de compra del registro: ";
                cin>>auxfechac;
                cout<<"Ingresa el nuevo precio del registro: ";
                cin>>auxprecio;
                cout<<"Ingresa la nueva ciudad de origen del registro: ";
                cin>>auxciudad;
                cout<<"Ingresa el nuevo departamento del registro: ";
                cin>>auxdepartamento;
                aux<<clave<<" "<<auxnuevonombrep<< " "<<auxprov<<" "<<auxfechac<<" "<<auxprecio<<" "<<auxciudad<<" "<<auxdepartamento<<endl;
                cout<<"Registro Modificado"<<endl;
            }else{
                aux<<auxClave<<" "<<nombrep<< " "<<prov<<" "<<fechac<<" "<<precio<<" "<<ciudadorigen<<" "<<departamento<<endl;
            }
            lectura>>clave;
        }
    }else{
        cout<<"No se pudo abrir el archivo o aun no ha sido creado"<<endl;
    }
    if(encontrado==false){
        cout<<"No se encontro ningun registro con clave de compra: "<<auxClave<<endl;
    }
    aux.close();
    lectura.close();
    remove("reg.dat");
    rename("regaux.dat","reg.dat");
}


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Funcion de modificar archivos copia el valor de variable a todos los registros
« Respuesta #1 en: 28 Mayo 2017, 18:05 pm »

Para qué guardas lo que has leído cuando no coincide la clave? Lo duplicarás.
Para sobreescribir un registro, espero que todos los campos sean de longitud fija, debes volver atrás el puntero del archivo tantos bytes como ocupa el registro y entonces reescribir.


En línea

lifegame

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Funcion de modificar archivos copia el valor de variable a todos los registros
« Respuesta #2 en: 28 Mayo 2017, 18:30 pm »

Al parecer si, el problema era que por error habia pusto que registrara la clave auxiliar en lugar de la clave original cuando la clave no coincidia. Muchas gracias por la ayuda amigo  ;D
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