C en Palib

Hola de nuevo, estoy creando un pequeno navegador de archivos y me encontre con un error.
Lo que necesito es que el archivo abierto se divida en las paginas del navegador (a,b,c,d,e).
Y necesito que cada pagina tenga como maximo 576 letras.
Os dejo el codigo con el que lo he intentado
       
FILE* leer = fopen (archivolt, "rb"); //rb = leer
   fread(texto, 10000, 1, leer);
   fclose(leer);
   char nada = 0;
while (0 == 0)
{
if (texto[nt] == nada) npaglt = p; nletter = n; break;
if (p == 0 && n < 576) paginalt.a[n] = texto[nt];
if (p == 1 && n < 576) paginalt.b[n] = texto[nt];
if (p == 2 && n < 576) paginalt.c[n] = texto[nt];
if (p == 3 && n < 576) paginalt.d[n] = texto[nt];
if (p == 4 && n < 576) paginalt.e[n] = texto[nt];
if (n == 576 && p != 4) npaglt++; n = 0;
if (n == 576 && p == 4) PA_OutputSimpleText (1, 1, 1, "El archivo es demasiado grande");break;
n++;
nt++;
   }   
Es normal que no te funcione:
if (texto[nt] == nada) npaglt = p; nletter = n; break;


Si no usas las {}, el if sólo engloba la primera orden después de él, que en este caso es npaglt = p;

Por tanto, nletter = n; break; se ejecutará siempre, por lo que antes de empezar a hacer nada, ya te has salido del while con el break;

debes ponerlo así if (texto[nt] == nada){ npaglt = p; nletter = n; break;}

También te aconsejo que utilices la sentencia if-else en vez de solo la if, así mejorarás el rendimiento del programa.

Y también te aconsejo que utilices la función feof() para detectar si se ha llegado al final del fichero, porque ese nada=0 no creo que esté muy bien ahí, o bien que hagas lo siguiente para leer el fichero y dividirlo:

FILE* leer = fopen (archivolt, "rb"); //rb = leer
fread(texto, 10000, 1, leer); //10000 es una burrada, espero que no hayas declarado el texto como texto[10000]...
fclose(leer);

sscanf(texto,"%576s%576s%576s%576s%576s", paginalt.a, paginalt.b, paginalt.c, paginalt.d, paginalt.e);


Lo que estamos haciendo es pasar todo el contenido del archivo a la cadena "texto", y de ahí escanear mediante %576s cadenas de texto de 576 caracteres, que guardaremos en las diferentes páginas.

Ya nos cuentas que tal.

Un saludo.
1 respuesta