Pasar fichero de texto a binario
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
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
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
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
