Pasar fichero de texto a binario

pandora
28 de Agosto del 2003
Hola a todos. Necesito resolver un problema que es el siguiente:
Tengo una serie de datos en un fichero de texto, separados por ; y necesito guardarlos en un fichero binario. ¿Hay alguna forme de poder leerlos por separado? Es decir si tengo:

Manolo Perez;33326419;916393634;Madrid

Que guarde Manolo Perez en nombre, 33326419 en dni, etc...
Yo lo intente con fscanf pero no fui capaz.

Os agradecería muchisimo la resolución de esta duda.

Muchas gracias a todos

chuidiang
28 de Agosto del 2003
Si todas las lineas son del mismo formato, puedes hacerlo con fscanf(). En tu caso sería asi

fscanf ("%s %s;%d;%d;%s", nombre, apellido, &n1, &n2, ciudad);

Date cuenta que sanf() deja de leer con los espacios, asi que debes leer el nombre y el apellido en dos variables separadas.

Otra opción es que leas una linea completa con fgets() y luego, con strtok() te dediques a separar items separados por ;

Algo asi como esto

char *item;
item = strtok (linea_leida, ";");
while (item != NULL)
{
TratarItem (item); // Lo que tengas que hacer con el item
item = strtok (NULL, ";"); // Conseguir siguiente item pasando NULL como primer parametro.
}

Los items que son numeros, debes convertirlos con atoi

numero = atoi (item);

La funcion strtok() te estropea la cadena leida, asi que no la reutilices luego.

Se bueno