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

Funcion para editar registros

Estas en el tema de Funcion para editar registros en el foro de C/C++ en Foros del Web. Tengo un codigoo muy sencillo y basico para manejear ficheros en C, me gustaria que me ayudaran a crear una funcion que puedea editar los ...
  #1 (permalink)  
Antiguo 17/07/2012, 13:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 11 meses
Puntos: 0
Funcion para editar registros

Tengo un codigoo muy sencillo y basico para manejear ficheros en C, me gustaria que me ayudaran a crear una funcion que puedea editar los registros....Hata ahora, este codigo puede:

1) crear un archivo,
2) Insertar varios registros al archivo
3) ver los todos los registros previamente insertados


Pero necesito una pequeña funcion que me permita editar un registro dterminado... Por ejemplo cambiar el nombre, la edad o el sueldo.... La funcion debe llamarse Editar_datos()

ayudenme porfavor aca les dejo el codigo

Código:
/*
 *      FicheroCompleto.c
 *      
 *      Copyright 2009 Julio César Brizuela <brizuela@linux-qxlk>
 *      
 */
 
#include <stdio.h>
 
void menu();
void CrearFichero(FILE *Fichero);
void InsertarDatos(FILE *Fichero);
void VerDatos(FILE *Fichero);
 
struct sRegistro {
   char Nombre[25];
   int Edad;
   float Sueldo;
} registro;
 
int main()
{
        int opcion;
        int exit = 0;
        FILE *fichero;
 
        while (!exit)
        {       
                menu();
                printf("\nOpcion: ");
                scanf("%d", &opcion);
 
                switch(opcion)
                {
                        case 1:
                                CrearFichero(fichero);
                        break;
                        case 2:
                                InsertarDatos(fichero);
                        break;
                        case 3:
                                VerDatos(fichero);
                        break;
                        case 4:
                                exit = 1;
                        break;
                        default:
                                printf("\nopcion no valida");
                }
        }
 
        return 0;
}
 
void menu()
{
        printf("\nMenu:");
        printf("\n\t1. Crear fichero");
        printf("\n\t2. Insertar datos");
        printf("\n\t3. Ver datos");
        printf("\n\t4. Salir");
}
 
void CrearFichero(FILE *Fichero)
{
        Fichero = fopen("fichero", "r");
 
        if(!Fichero)
        {
                Fichero = fopen("fichero", "w");
                printf("\nArchivo creado!");
        }
        else
        {
                printf("\nEl fichero ya existe!");
        }
 
        fclose (Fichero);
 
        return;
}
 
void InsertarDatos(FILE *Fichero)
{
        Fichero = fopen("fichero", "a+");
 
        if(Fichero == NULL)
        {
                printf("\nFichero no existe! \nPor favor creelo");
                return;
        }
 
        printf("\nDigita el nombre: ");
        scanf("%s", &registro.Nombre);
 
        printf("\nDigita la edad: ");
        scanf("%d", &registro.Edad);
 
        printf("\nDigita el sueldo: ");
        scanf("%f", &registro.Sueldo);
 
        fwrite(&registro, sizeof(struct sRegistro), 1, Fichero);
 
        fclose(Fichero);
 
        return;
}
 
void VerDatos(FILE *Fichero)
{
        int numero = 1;
 
        Fichero = fopen("fichero", "r");
 
        if(Fichero == NULL)
        {
                printf("\nFichero no existe! \nPor favor creelo");
                return;
        }
 
        fread(&registro, sizeof(struct sRegistro), 1, Fichero);
 
        printf("\nNumero \tNombre \tEdad \tSueldo");
 
        while(!feof(Fichero))
        {
                printf("\n%d \t%s \t%d \t%.2f", numero, registro.Nombre,
                registro.Edad, registro.Sueldo);
                fread(&registro, sizeof(struct sRegistro), 1, Fichero);
                numero++;
        }
 
        fclose(Fichero);
 
        return;
}
  #2 (permalink)  
Antiguo 17/07/2012, 17:32
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 11 meses
Puntos: 94
Respuesta: Funcion para editar registros

Hola! generalmente cuando se trata estos temas, para lo que vos queres hacer se utiliza un campo clave, es decir un determinado parametro que te va a permitir buscar en el archivo.txt. En este caso podes elegir el Nombre; en pseudocodigo tendrias q hacer:

1º leer un registro del archivo
2º comparar el campo clave con el registro leido
3º si es el registro ->modificar
4º no es el registro -> volver paso 1º

Fijate si lo podes hacer. Si tenes algun libro busca algo como: "archivos de acceso aleatorio o directo en C". Sino segui preguntando

Saludos

Etiquetas: funcion, int, registros, struct
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 22:30.