Cuando lees la última entrada del archivo, aún no se ha leído la marca de final de archivo. Por eso, en el bucle, intenta hacer una lectura más, que es cuando ya lee la marca de final de archivo. Cuando ocurre esto, lo que te devuelve fscanf() es lo último que había leído antes de leer el fnal de archivo. Para resolver esta aparente repetición de la última lectura, basta con hacer una comprobación justo después de fscanf():
Código C:
Ver original{
/* Comprobar aquí si lo que se ha leído es el final del archivo */
break;
insertarM(toReturn,leido);//inseta en un TDA
printf("inserte %s en un multiset\n",leido
); insertarM(todos,leido);//inserta en otro multiset
printf("inserte %s en todos\n",leido
); }
Saludos,