Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como leo un archivo(base de datos) con c++?

Estas en el tema de Como leo un archivo(base de datos) con c++? en el foro de C/C++ en Foros del Web. Hola que tal quisiera que me ayuden con un problema, deseo leer o abrir un documento de texto, que es una base de datos, de ...
  #1 (permalink)  
Antiguo 26/06/2010, 20:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 15
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Como leo un archivo(base de datos) con c++?

Hola que tal quisiera que me ayuden con un problema, deseo leer o abrir un documento de texto, que es una base de datos, de una persona con tres campos, como nombre ,apellido y edad.
Jorge Luis Ramos Huertado 20
Enrique jose Jimenes altamirano 17
juan Men Otero ford 20
Carlos YARA tataje 19
Lo intentado leer con este programa(es solo una parte del programa), pero cuando lo muestro, me repiten los datos y otros simbolos, y no salen de manera estructurada.
Lo que quiero es tener los datos ordenados en memoria para poder realizar otras funciones. como mostrar solo los nombres o los apellidos con las edades

Código:
#include<conio.h>
#include<cstdlib>
#include<stdio.h>
using namespace std;
const int MAX =10;
struct persona{
   char nombre[20];
   char apellido[20];
   int edad;
};
void mostrardatos(persona p[MAX],int dim);
void recuperar(persona p[MAX], int *dim);
int main()
{
   int nd=0;
   char opc;
   persona a[MAX];
   do{
      opc=getch();
      switch(opc){
         case'1':system("cls");
            mostrardatos(a,nd);
            getch();
            break;
         case'2':system("cls");
            recuperar(a,&nd);
            getch();
            break;
         }
   }while(opc!='0');
   system("pause");
   return (0);
}
void mostrardatos(persona p[MAX],int dim)
{
   int i;
   if(dim==0){
      printf("\n\tNo hay datos registrados");
   }
   for(i=0;i<dim;){
      printf("%6d",i+1);
      printf("\t%s",p[i].nombre);
      printf("\t\t%s",p[i].apellido);
      printf("\t\t%d\n",p[i].edad);
      i=i+1;
   }
   printf("\n\n");
   
}
void recuperar(persona p[MAX], int *dim)
{
   persona A;
   FILE *F;
   int n=0;
   F=fopen("datos.txt","r+");
   if(F==NULL){
      cout<<"No se puede abrir el Archivo\n";
      exit(1);
   }
    
   while(!feof(F)){
      fread(&A,sizeof(A),1,F);  
      p[n]=A;
      n=n+1;
   }
   fclose(F);
   *dim=n-1;
   cout<<"\t\tSus Datos han sido Recuperados";
   cout<<"\n\n";
   cout<<"\t\t";
   system("pause");  
}
Quizas tenga que usar el fstream pero mi problema es como leer los datos de esa base de datos de manera estructurada y luego trabajar con ellos o quizas el archivo de texto debo guardarlo de otra manera? No se como hacerlo...
Les agradeceria mucho su ayuda.
  #2 (permalink)  
Antiguo 28/06/2010, 11:49
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Como leo un archivo(base de datos) con c++?

hola capo, mira no se si te sera de utilidad http://c.conclase.net/ficheros/index.php pero en este sitio te explica muchas cosas para trabajar con archivos. Por ahi te muestra "Basura" porque no estas abriendo el archivo en modo binario. http://mis-algoritmos.com/documento45.html.

Proba seguirlo paso a paso y ver que datos toman las struct en cada instancia.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.