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;
}
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