Y si en caso de que el segundo dato no sea un entero, y sea un string? u otro tipo de dato?
printf("%s %d %d/%d/%d\n", nombre, num, d, m, a);
Te marcaría error ya que %d hace referencia a que es un entero
Por partes (todo lo que sigue es
en buen plan):
1) El valor de retorno de las funciones scanf/fscanf/sscanf es el numero de conversiones realizadas con éxito.
2) En mi programa de ejemplo se verifica que se puedan leer las cinco conversiones, para ello es tan sencillo como verificar que el valor de retorno de la función sea igual a ... cinco.
3) Cuando se encuentra una linea que no cumple con ese formato (y eso sucede con el ultimo elemento del array, la cadena "LINEA_SIN_EL_FORMATO_VALIDO") la función retorna algún otro valor, la condición:
sscanf(linea
[i
], " %[^#]#%d#%d/%d/%d", nombre
, &num
, &d
, &m
, &a
) == 5
Resulta en el valor cero (falso en C) y con ello el bucle termina su ejecución.
----
por qué no mejor leer el texto entero como si fuese un string?, de esta manera
En su tercer mensaje el creador del tema (me refiero al usuario
niraikanai ) indica que utiliza esa función para leer las lineas de texto:
Leo la linea con fgets. Por ejemplo fgets(linea, 80, pF)
Un saludo