ayuda con un programa de registros porfavor c++

Iniciado por ronms, 16 Enero 2019, 06:13 AM

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

ronms

tengo este codigo con el cual ingreso datos en en un archivo .dat
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
FILE* arch;
   struct stregistro
   {
      char codigo[100];
      char nombre[10];
      char direccion[10];
      int edad;
      float nota;
      
   }
   persona;
   arch=fopen("datos.dat","ab");
   cout<<"digite los datos: "<<endl;
   cout<<"ingrese el codigo"<<endl;
   cin>>persona.codigo;
   cout<<"nombre: "<<endl;
   cin>>persona.nombre;
   cout<<"direccion: "<<endl;
   cin>>persona.direccion;
   cout<<"edad: "<<endl;
   cin>>persona.edad;
   cout<<"nota: "<<endl;
   cin>>persona.nota;
   fseek(arch,sizeof(stregistro),SEEK_SET);
   fwrite(&persona,sizeof(stregistro),1,arch);
   
   return 0;
}


y necesito ayuda con este codigo deberia ser para sacar los datos del codigo que se ingresa pero no me funciona porfavor ayuda

#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
   FILE* arch;
   struct stregistro
   {
      char codigo[10];
      char nombre[10];
      char direccion[10];
      int edad;
      float nota;
      
   }
   persona;
   int i;
   char wcodigo[10];
   arch=fopen("datos.dat","r");
   if (arch == NULL)
        {
            printf("\nError de apertura del archivo. \n\n");
        }
       
   cout<<"ingrese el codigo: "<<endl;
   cin>>wcodigo;
   i=0;
   while (!feof(arch))
   {
      fseek(arch,i*sizeof(stregistro),SEEK_SET);
      fread(&persona,sizeof(stregistro),1,arch);
      if(persona.codigo==wcodigo)
      {
      cout<<"nombre: "<<persona.nombre<<endl;
      cout<<"direccion: "<<persona.direccion<<endl;
      cout<<"edad: "<<persona.edad<<endl;
      cout<<"nota: "<<persona.nota<<endl;
      cout<<endl;   
      }
      i=i+1;
   }
   return 0;
}

K-YreX

Primero, un <struct> es muy recomendable definirla fuera de cualquier función ya sea <main> u otra. Por lo tanto te recomiendo que definas la <struct> antes del <main> en vez de dentro.

Además de eso te recomiendo que si estás programando en C++ (lo que parece que es así por <iostream>), uses también las herramientas para tratamiento de archivos que da C++ (librería: <fstream>) y no las herramientas de C que son las que estás usando ahí.

Al margen de eso, pon tu código dentro de etiquetas GeSHi (las puedes seleccionar encima del cuadro de texto cuando escribes/modificas un mensaje), ya que sino se hace más difícil de ver el código. Suerte :-X
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;