Mensaje    Asunto: Error en la lectura de ficheros Responder citando

Hola, tengo un problema que aún no sé a qué atribuirlo.

Estoy leyendo ficheros ASCII línea a línea, a menudo el fichero a leer es muy grande (actualmente estoy probando con uno de 558MB), aunque no creo que el tamaño del fichero sea el problema. He probado con FILE y con ifstream para comparar tiempos de ejecución y, con códigos prácticamente idénticos, obtengo que FILE lee aprox. 3 veces más rápido que ifstream (si alguien sabe algo que contradiga estos datos que me lo diga para indagar más sobre el tema), por lo que me he decantado por el uso de FILE.

Para leer las líneas utilizo
Código:
   char linea[65536];
   //...
   while (!feof(ficheroFuente)
      {
      fgets(linea, sizeof(linea), ficheroFuente);
      lineasLeidas++;
      }
El motivo de asignar 64KB a linea es porque a veces hay líneas muy largas y el programa se metía en un bucle sin fin cuando intentaba leer una de ellas (o eso creo ¿alguna opinión?).

Al salir del bucle compruebo que la última línea leída no es la última del fichero. Se suele detener cuando ha leído 219MB.

He comprobado que el último caracter leído es 'œ'. Esto me ha hecho sospechar que es un caracter especial que pone feof() a true, sin embargo al seguir haciendo pruebas he comprobado que si coloco algo más en el bucle de lectura se lee bien todo el fichero, no se detiene al leer ese caracter. Concretamente he añadido
Código:
      posicion = ftell(ficheroFuente);
al bucle y va como la seda. (He probado con fflush() en lugar de ftell() y se detiene como he mencionado antes)

¿El problema está en el caracter leído o es una descoordinación del primer código que se corrige al hacer trabajar más a la CPU dentro del bucle? (se me ocurre que al tener más cosas que hacer le da tiempo a leer correctamente las líneas) ¿O es cualquier otra cosa que no esté considerando?

Gracias