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

Programa en C modificar archivo

Estas en el tema de Programa en C modificar archivo en el foro de C/C++ en Foros del Web. Compañeros, estoy haciendo un programa de votaciones respecto a la universidad en el cual tengo cargado el padron en un archivo de texto de la ...
  #1 (permalink)  
Antiguo 21/10/2015, 11:30
 
Fecha de Ingreso: agosto-2015
Mensajes: 20
Antigüedad: 8 años, 8 meses
Puntos: 0
Programa en C modificar archivo

Compañeros, estoy haciendo un programa de votaciones respecto a la universidad en el cual tengo cargado el padron en un archivo de texto de la siguiente manera

Padron: http://pastebin.com/iUZHRyKf

Tengo que poder dar de alta, baja y modificar alumnos
El alta simplemente agrego al final, pero a la hora de dar de baja, o modificar el padron no se como encararlo

Por ejemplo: si doy de baja quiero que el dni se ponga en 0

1 Lucio 01 1 1 1

al darlo de baja que quede

0 Lucio 01 1 1 1

y al modicar poder cambiar cualquiera de los campos.

Desde ya muchas gracias. Saludos
  #2 (permalink)  
Antiguo 21/10/2015, 11:54
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Programa en C modificar archivo

Cuando das de baja ¿no te sirve eliminarlo del archivo sin más? Para ello creas un archivo auxiliar donde copias todos menos el que quieras quitar, eliminas el archivo original y renombras el auxiliar.
Te aconsejo que uses una estructura para crear, leer, editar datos del archivo y uses fread y fwrite que te facilitarán mucho las cosas.
  #3 (permalink)  
Antiguo 21/10/2015, 11:58
 
Fecha de Ingreso: agosto-2015
Mensajes: 20
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Programa en C modificar archivo

Si, me sirve hacer eso para darlo de baja pero no tengo la menor idea de como. Me podras guiar?
  #4 (permalink)  
Antiguo 21/10/2015, 12:27
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Programa en C modificar archivo

Algo rápido desde el movil:
Código C:
Ver original
  1. struct{
  2.    int dni;
  3.    char nombre [25];
  4. }persona;

Luego rellenas la estructura:
Código C:
Ver original
  1. printf ("Nombre: ");
  2. scanf ("%s",persona.nombre);
  3. printf ("DNI: ");
  4. scanf ("%d",&persona.dni

Lo guardas en el archivo:
Código C:
Ver original
  1. FILE *pFile =fopen ("padrón.bin","a+");
  2. fwrite (&persona, sizeof (persona),1,pFile);

Para leer se usa fread que tiene los mismos argumentos así que con cambiar fread por fwrite funcionaria.
Para leer todo el archivo se usa un bucle while cuya condición sea !feof () y con eso leerá todo el archivo hasta que encuentre EOF.
Busca info por internet sobre manipular archivos estructurados en C y ahí lo veras todo mejor y con códigos de ejemplo.
  #5 (permalink)  
Antiguo 21/10/2015, 14:09
 
Fecha de Ingreso: agosto-2015
Mensajes: 20
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Programa en C modificar archivo

Cita:
Iniciado por aguml Ver Mensaje
Algo rápido desde el movil:
Código C:
Ver original
  1. struct{
  2.    int dni;
  3.    char nombre [25];
  4. }persona;

Luego rellenas la estructura:
Código C:
Ver original
  1. printf ("Nombre: ");
  2. scanf ("%s",persona.nombre);
  3. printf ("DNI: ");
  4. scanf ("%d",&persona.dni

Lo guardas en el archivo:
Código C:
Ver original
  1. FILE *pFile =fopen ("padrón.bin","a+");
  2. fwrite (&persona, sizeof (persona),1,pFile);


Para leer se usa fread que tiene los mismos argumentos así que con cambiar fread por fwrite funcionaria.
Para leer todo el archivo se usa un bucle while cuya condición sea !feof () y con eso leerá todo el archivo hasta que encuentre EOF.
Busca info por internet sobre manipular archivos estructurados en C y ahí lo veras todo mejor y con códigos de ejemplo.

Mira, podria hacerlo con fwrite pero no me queda el archivo ordenado como yo quiero, el archivo tiene que tener el formato
DNI NOMBRE CAT Etc.. y si guardo como fwrite no me lo guarda asi verdad?

Última edición por matitlive; 21/10/2015 a las 14:30
  #6 (permalink)  
Antiguo 21/10/2015, 14:55
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Programa en C modificar archivo

No entiendo. fwrite lo guardará en binario, o sea, un array de caracteres se lee bien pero cualquier otro tipo es ilegible a simple vista. Si te refieres a hacer doble clic sobre el archivo y leerlo tendrías que usar cadenas de caracteres para todo y darle el formato deseado. Si se puede usar fwrite pero tendrías que crear char* para todos los miembros de la estructura. Después de cada scanf buscas el carácter \n y lo sustituyes por un espacio y así hasta el final del array y el último lo pones como \0 y así tendrías todo con un efecto tabulador. También puedes usar scanf dando formato para que lo haga el. Por ejemplo: scanf ("%14s",persona.nombre); Si no estoy confundido rellenarla los caracteres no rellenados por el nombre con espacios. Lo mismo harías con dni y todo pero si quieres que sea legible a simple vista tendrías que hacerlo todo igual que el nombre dando el ancho deseado.
  #7 (permalink)  
Antiguo 21/10/2015, 17:45
 
Fecha de Ingreso: agosto-2015
Mensajes: 20
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Programa en C modificar archivo

Claro, pero no hay una manera con fseek de ir borrando el archivo segun la posicion?
  #8 (permalink)  
Antiguo 21/10/2015, 23:57
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Programa en C modificar archivo

Es más engorroso y menos limpio.tendrías que ir sobre escribiendo cada registro por el siguiente y cuando llegas al final retroceder un registro y mandas EOF.

Etiquetas: modificar, programa
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 10:38.