Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/10/2015, 10:47
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: Como hacer que fscanf saltee espacios en blanco?

Lo más sencillo es en vez de leer con fscanf vayas leyendo con fgetc.

La idea podría ser más o menos la siguiente:

Cita:
// Rutina para leer el dni
1. leo caracter con fgetc
2. si no es un espacio:
2.1. acumulo el caracter correspondiente al campo DNI
2.2. salto a 1
// Rutina para saltar series de espacios en blanco
3. leo caracer con fgetc
4. si es un espacio salto a 3
// Rutina para leer el nombre
5. acumulo el caracter correspondiente al campo nombre
6. leo caracter con fgetc
7. si no es un espacio salto a 5
Y con repetir las dos últimas rutinas para el resto de campos lo tendrías hecho.

E incluso podrías generalizar aún más el proceso:

Para leer un campo:

Cita:
1. leo caracer con fgetc
2. si es un espacio salto a 1
3. acumulo el caracter al campo que corresponda
4. leo caracter con fgetc
5. si no es un espacio salto a 3
Repitiendo estas 5 rutinas en cascada puedes leer todos los campos de forma secuencial... ahora solo te faltaria pegarte con el salto de línea, no te lo iba a dar todo mascado, no? :)

Un saludo