• Lunes 18 de Noviembre de 2024, 10:32

Autor Tema:  Ficheros  (Leído 1630 veces)

alexancoC++

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Ficheros
« en: Lunes 30 de Abril de 2007, 18:46 »
0
Hola, una consulta sobre ficheros. Tengo la siguiente estructura:

Código: Text
  1.  
  2. #define N 15
  3. #define LON 25
  4.  
  5. struct alumno
  6. {
  7.   char Nombre[LON];
  8.   long dni;
  9.   int Edad;
  10. };
  11.  
  12.  

y el siguiente vector donde guardo los alumnos:
Código: Text
  1.  
  2. alumno Clase[N];
  3.  
  4.  

El caso es que le paso los datos de los alumnos a dicho vector.
Después de pasarle los datos, tengo que hacer una función que lea los nombres de los alumnos y los escriba en el fichero Nombre.txt. Luego los irá leyendo y imprimirá el resultado por pantalla.
Mi pregunta es como tengo que hacerlo para que los lea y luego los escriba en dicho fichero? con un fscanf i fprintf? Como se debería hacer?

Muchas gracias, saludos.

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Ficheros
« Respuesta #1 en: Lunes 30 de Abril de 2007, 22:00 »
0
con fwrite y fread... te quedaría algo así:

Código: Text
  1.  
  2. structtype xname;// que sería el nombre de tu estructura...
  3. fwrite (&xname, sizeof(xname), 1, fstream);
  4.  
  5.  

y para recuperar:

Código: Text
  1.  
  2. fread(&xname, sizeof(xname), 1, fstream);
  3.  
  4.  

S2

alexancoC++

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ficheros
« Respuesta #2 en: Martes 1 de Mayo de 2007, 12:10 »
0
Pero solo quiero coger de la estructura los Nombres de los alumnos, no toda entera.
Quiero leer los nombres del vector i escribirlos en el fichero Nombres.txt.
Luego abrir el fichero e ir leyendo e imprimiendo por pantalla el resultado de este fichero.

Gracias.

alexancoC++

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ficheros
« Respuesta #3 en: Martes 1 de Mayo de 2007, 12:47 »
0
Primero e pasado los nombres del vector con un for y los e escrito en el fichero con un fprintf.
Luego e vuelto a abrir el fichero y lo e ido leyendo con un fscanf, mediante un while con la condición que sea diferente de EOF, y los e ido printando en pantalla.

Correcto? o algo parecido?

saludos!

alexancoC++

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ficheros
« Respuesta #4 en: Martes 1 de Mayo de 2007, 22:37 »
0
Para pasar a un fichero un vector de n elementos mediante un fwrite y para leerlo mediante un fread, se tiene que pasar valor por valor con un for, o no es necesario?

gracias

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Ficheros
« Respuesta #5 en: Miércoles 2 de Mayo de 2007, 03:51 »
0
no, justamente fwrite y fread sirven para escribir o leer arreglos de N elementos en un archivo, estas funciones permiten esta opción en el 3º argumento...

Código: Text
  1.  
  2. fwrite (&xname, sizeof(xname),[B] 1[/B], fstream);
  3.  
  4. fread(&xname, sizeof(xname),[B] 1[/B], fstream);
  5.  
  6.  

en este caso lo puse en 1 porque no sabía cuantos elementos querías leer o escribir... pero podes cambiarlo según lo que quieras hacer...

S2