Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Cas980 en 23 Febrero 2014, 05:52 am



Título: Abrir y leer un archivo
Publicado por: Cas980 en 23 Febrero 2014, 05:52 am
Hola, esta semana empece a trabajar con archivos. Tengo este codigo que crea un archivo
Código:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#include <fstream>
#include <cstring>
#include <sstream>

struct alu
{
char nombre[30];
int edad;
float altura;
};

alu vec[10];

main()
{
int x,y,orden,n;

printf("Cuantas personas desea ingresar?: ");
scanf("%i",&n);
printf("\n");
ofstream fsalida("Datos.alu.dat",ios::out|ios::binary);

for (x=0; x<n;x++)
{
printf("Introduce el nombre: ");
setbuf(stdin,NULL);
gets(vec[x].nombre);

printf("Introduce la edad: ");
scanf("%i",&vec[x].edad);

printf("Introduce la altura: ");
   cin>>vec[x].altura;

printf("\n\n");

fsalida.write(reinterpret_cast<char *>(&vec[x]),sizeof (alu));

}
fsalida.close();


ifstream fentrada ("Datos_alu.dat",ios::in |ios::binary);
for (x=0; x<n;x++)//Imprimir

{
fentrada.read(reinterpret_cast<char *>(&vec[x]),sizeof(alu));

printf ("Nombre: %s\n",vec[x].nombre);
printf ("Edad: %i\n",vec[x].edad);
printf ("Altura %.1f\n",vec[x].altura);
printf("\n\n");

}
fentrada.close();

getch();

}

Como puedo hacer otro programa pero que esta vez lea el archivo "Datos.alu.dat" sume las edades, imprima y lo guarde en el mismo archivo.
No tengo muy claro como hacer que abra el archivo  y lo lea para poder manejar las edades.


Título: Re: Abrir y leer un archivo
Publicado por: rir3760 en 23 Febrero 2014, 16:48 pm
esta semana empece a trabajar con archivos. Tengo este codigo [...]
Código
  1. // ...
  2.  
  3. ifstream fentrada ("Datos_alu.dat",ios::in |ios::binary);
  4. for (x=0; x<n;x++)//Imprimir{
  5.   fentrada.read(reinterpret_cast<char *>(&vec[x]),sizeof(alu));
  6.  
  7.   printf ("Nombre: %s\n",vec[x].nombre);
  8.   printf ("Edad: %i\n",vec[x].edad);
  9.   printf ("Altura %.1f\n",vec[x].altura);
  10.   printf("\n\n");
  11. }
  12. fentrada.close();
  13.  
  14. // ...
Como puedo hacer otro programa pero que esta vez lea el archivo "Datos.alu.dat" sume las edades, imprima y lo guarde en el mismo archivo. No tengo muy claro como hacer que abra el archivo  y lo lea para poder manejar las edades.
Ese programa tiene varias deficiencias como mezclar C y C++, la recomendación aquí es leer el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). También deberías conseguir un buen curso o libro sobre C++, recomendaciones sobre ellos las puedes consultar mediante el motor de búsqueda de los foros.

Aparte de eso en el programa hay un error lógico ya que los nombres del archivo de salida "Datos.alu.dat" y entrada "Datos_alu.dat" no coinciden. En cuanto a la lectura de un archivo no debes tener problemas ya que esa operación ya la realizas en tu programa (en la parte que cite).

Un saludo