Abrir y leer un archivo

Iniciado por Cas980, 23 Febrero 2014, 05:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Cas980

Hola, esta semana empece a trabajar con archivos. Tengo este codigo que crea un archivo

#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.

rir3760

Cita de: SanRey en 23 Febrero 2014, 05:52 AMesta semana empece a trabajar con archivos. Tengo este codigo [...]
Código (cpp) [Seleccionar]
// ...

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();

// ...

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|. 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language