[C con Clase] Añadir registros a tabla dbf DBaseIII desde C

luis netyweb en gmail.com
Vie Oct 19 09:32:40 CEST 2007


La ayuda anterior me ha servido de mucho. Muchas gracias.
He estado haciendo varias pruebas y funciona bien.

Pero tengo el problema con los tipos de datos. En concreto con el tipo de dato numerico de la tabla dbf.

No sé cómo escribir o leer un dato de tipo numerico. Debe ser sencillo pero no me sale.
En la tabla dbf de ejemplo de http://es.geocities.com/yakooes/ hay un tipo numerico de tamaño 2 y despues hay 2 campos de tipo caracter de tamaño 10 cada 

uno.

Si todos los campos son de tipo caracter, no tengo problema para escribir y leer. Pero si hay un tipo numerico, no consigo leerlo ni escribirlo 

correctamente.

Por ejemplo, si tengo una escructura como esta:

struct tabla{
         int idcliente;
         char nombre[10];
         char direccion[10];
};

struct tabla c3;


Si todos los tipos son caracter(char idcliente, char nombre[10] y char direccion[10]) los leo así:


fread(&c3, 23, 1, pa);
  printf("\n");
  while(!feof(pa))
  {
     p = &c3.idcliente[0];
     
     for(i=0;i<23;i++)
     {
          printf("%c",*p);
          p++;
     }
     
     printf("\n");
     fread(&c3, 23, 1, pa);
  }


Y los escribo así:

  printf("\nid: ");
  gets(c3.idcliente);
  
  printf("\nNombre: ");
  gets(c3.nombre);
    
  printf("\nDireccion: ");
  gets(c3.direccion);
  
  fwrite(&c3, 22, 1, pa);

El problema lo tengo cuando el campo idcliente es de tipo numerico y con tamaño 2 cuando creo la tabla dbf.
Siguiendo la logica anterior con el tipo caracter, he utilzado el tipo numerico pero no sale bien.

Gracias y salu2.


Más información sobre la lista de distribución Cconclase