SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: alexancoC++ en Lunes 30 de Abril de 2007, 18:46

Título: Ficheros
Publicado por: alexancoC++ en Lunes 30 de Abril de 2007, 18:46
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.
Título: Re: Ficheros
Publicado por: Karman en Lunes 30 de Abril de 2007, 22:00
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
Título: Re: Ficheros
Publicado por: alexancoC++ en Martes 1 de Mayo de 2007, 12:10
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.
Título: Re: Ficheros
Publicado por: alexancoC++ en Martes 1 de Mayo de 2007, 12:47
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!
Título: Re: Ficheros
Publicado por: alexancoC++ en Martes 1 de Mayo de 2007, 22:37
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
Título: Re: Ficheros
Publicado por: Karman en Miércoles 2 de Mayo de 2007, 03:51
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