• Lunes 16 de Diciembre de 2024, 00:43

Autor Tema:  Ficheros  (Leído 3812 veces)

fabrizzio

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Ficheros
« en: Jueves 20 de Enero de 2005, 15:58 »
0
que tal
tengo una pregunta espero puedan ayudarme
estoy haciendo un programa en c++ y estoy guardando informacion en un archivo, quiero hacer una opcion que me deje modificar la informacion guardada.

el archivo maneja registros : nombre apellido cedula etc, pero no estoy usando estructuras.

cuando voy a guardar la informacion en el archivo uso fprintf pero igual no guarda,
espero me hayan entendido

gracias por su ayuda

atte
fabrizzio

iori2029

  • Miembro activo
  • **
  • Mensajes: 48
    • Ver Perfil
Re: Ficheros
« Respuesta #1 en: Jueves 20 de Enero de 2005, 19:21 »
0
Pues fread,pero seria para arreglos o estructuras. fgets extrae cadenas de un archivo de texto tambien.fgetc para 1 solo caracter.
Ahora eso de que no guarda los datos.....no te entiendo.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Ficheros
« Respuesta #2 en: Jueves 20 de Enero de 2005, 19:36 »
0
Si posteas parte del codigo que usar seria mas facil para todos darte una mano, asi como has posteado ahora, no sabemos siquiera si usas bien el puntero FILE. Danos algun otro dato. Gracias :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Ficheros
« Respuesta #3 en: Jueves 20 de Enero de 2005, 21:42 »
0
Hola

Para guardas archivos como estructuras usa mejor fwrite

Aqui te dejo un ejemplo

Código: Text
  1.  
  2.  
  3. // suponiendo que hay una variable de tipo struct llamada estructura
  4.  
  5. FILE *puntero; // creamos un ptro a archivo
  6.  
  7. puntero=fopen("DATOS.DAT","wb"); //abrimos
  8.  
  9. fwrite(&estructura,sizeof(estructura),1,puntero);  
  10.  
  11. // los argumentos son por este   orden , la direccion de la estructura que quieres guardar, su tamaño, el tercero deja 1 siempre, y wb significa abierto enpara escribir en modo binario.
  12.  
  13. fclose(puntero); //cerramos
  14.  
  15.  
  16.  


saludos  :hola:

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Ficheros
« Respuesta #4 en: Jueves 20 de Enero de 2005, 22:22 »
0
Código: Text
  1. el archivo maneja registros : nombre apellido cedula etc, pero no estoy usando estructuras.
  2.  

lo ideal seria que hagas como mensiona Diodo. Si no es posible, pues da igual, solo que es mas laborioso. Saludos!
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Ficheros
« Respuesta #5 en: Jueves 20 de Enero de 2005, 23:35 »
0
Hola

Perdon, me pase por alto lo de que no podias usar estructuras

Aqui te dejo otro ejemplo hecho con la funcion que tu usas fprintf que guarda un registro en cada linea del archivo .dat

Código: Text
  1.  
  2.  
  3. #include <stdio.h>
  4.  
  5. void main()
  6. {
  7.   char nombre[15];
  8.   char apellido[15];
  9.   int edad;
  10.   FILE *puntero;
  11.   puntero=fopen("DATOS.DAT","w");
  12.   for(int i=0;i<3;i++) // guardo 4 registros
  13.   {
  14.     printf("introduce el nombre\n");
  15.     scanf("%s",&nombre);
  16.     printf("introduce el apellido\n");
  17.     scanf("%s",&apellido);
  18.     printf("introduce la edad\n");
  19.     scanf("%i",&edad);
  20.     fflush(stdin);
  21.     fprintf(puntero,"%s %s %i",nombre,apellido,edad);
  22.   }
  23.   fclose(puntero);
  24. }
  25.  
  26.  
  27.  

saludos

fabrizzio

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ficheros
« Respuesta #6 en: Viernes 21 de Enero de 2005, 19:00 »
0
gracias
asumamos que el fprintf queda asi
Citar
fprintf(puntero,"%d %s %s %i\n",codigo,nombre,apellido,edad);

para que en el archivo se guarde la informacion de manera ordenada asi

Citar
1 luis salazar 20
2 tony leon 23
3 oscar rea 21


lo que yo quiero hacer es una funcion que pueda "por ejemplo" modificar alguna informacion de la segunda linea, mas o menos asi

Citar
1 luis salazar 20
2 tony leon 30
3 oscar rea 21


espero me hayan entendido gracias por la ayuda
atte
fabrizzio

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Ficheros
« Respuesta #7 en: Sábado 22 de Enero de 2005, 00:01 »
0
Hola

para el caso de manejo de archivos para guardar estructuras se que hay una funcion fseek para situarte en un registro concreto, para el caso de datos sueltos no se si hay alguno, lo mas seguro que no, pero puedes hacerla facilmente con un bucle e ir leyendo hasta el registro que desees, y entonces sobreescribir o cambiar el dato que quieras
De todas maneras veo mejor opcion que metas todos esos registros en una lista enlazada y los modifiques desde la lista y luego lo vuelvas a guardar

un saludo

fabrizzio

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ficheros
« Respuesta #8 en: Viernes 28 de Enero de 2005, 16:08 »
0
disculpen por ser necio pero de verdad necesito hacer este programa please una ultima ayuda please
gracias

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ficheros
« Respuesta #9 en: Lunes 31 de Enero de 2005, 15:20 »
0
y en que necesiats ayuda
ya te han dado suficiente no?
o que otras dudas tienes?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

fabrizzio

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ficheros
« Respuesta #10 en: Lunes 31 de Enero de 2005, 17:08 »
0
ne dicen que use estructuras, pero el programa de estar hecho con archivos secuenciales como el ejemplo que puse, yo estaba pensando en usar un while para posicionarme en el nombre que deseo cambiar, luego hacer un fscanf para tener los valores de esa linea del archivo en variables, luego cambiar el valor de las variables que desee cambiar y por ultimo hacer un fprintf, es lo logico pero no me salio espero que me entiendas       gracias

Haggen

  • Miembro activo
  • **
  • Mensajes: 88
  • Nacionalidad: mx
    • Ver Perfil
    • Mis proyectos
Re: Ficheros
« Respuesta #11 en: Lunes 31 de Enero de 2005, 23:18 »
0
también si es más facil para ti puedes crear una arreglo de estructuras, así cada nodo del arreglo será un registro, el único detalle es crear un arreglo lo suficientemente grande o usar listas dinámicas, primero al arrancar tu programa cargas todo el contenido de tu archivo en el arreglo, esto es lees el archivo registro por registro, luego a ese arreglo le haces los cambios que quieras como cuando usas arreglos normales y finalmente al terminar el programa mandas a escribir el arreglo en el archivo, así vas grabando registro por registro y listo.
 A la mejor es laborioso pero francamente yo tengo problemas con los accesos a tal o cual posición del archivo y así es más fácil para mi y no tengo problemas.... :hola:  :hola:

fabrizzio

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ficheros
« Respuesta #12 en: Lunes 31 de Enero de 2005, 23:34 »
0
eso no lo he probado, gracias es una muy buena idea gracias amigo