Cita de: huchoko en 6 Julio 2019, 03:56 AM
Ya sabía que solo se iba a leer 512 bytes (y ya lo he arreglado). Lo que aún no logro hacer funcionar es lo que comento en el título del hilo. Tal como me respondió MAFUS con un malloc es fácil, pero podría ser que el archivo:
a) Sea más grande de lo que hemos reservado en memoria para el buffer
b) Sea más pequeño de lo que hemos reservado, gastando memoria (solucionable con realloc?)
El problema que planteas ahora es muy facil de solucionar, la memoria la reserva fat32_open_file (doble puntero, referencia, valor de retorno, etc.) o de alguna manera le pasa al llamador el tamaño del archivo (idem) PERO falla el diseño por todas partes. Una funcion que se llama open no deberia estar leyendo un archivo, ni deberias reservar memoria para todo el archivo asi como asi (podria ocupar varios GB por ejemplo). Ni deberias tratar de terminar un buffer con un 0 terminador como si fuera una cadena ... y si esa parte si es una prueba o un codigo que no sera de produccion mejor abstraenos del mismo, solo consigue confundirnos y hacernos perder el tiempo mientras tratamos de ayudarte.
¿Como funciona un S.O. de verdad? Devuelve una referencia, un HANDLE, para hacer esto bien deberias asociar el archivo a una estructura donde tuvieras la informacion necesaria para poder leer (y escribir, retroceder o avanzar dentro del archivo, retornar el tamaño del mismo, etc.) y otra funcion de lectura separada, posteriormente el llamador y (no el S.O.) decide cuanto y como leer.
PD. Si todavia no conseguiste depurar tu codigo ya es imperativo que lo logres, por ejemplo me equivoque antes, el codigo tiene tantos errores que me perdi, fatbuff se intentara usar siempre que encuentre el archivo asi que esto no funciona bien jamas y es algo que podrias ver al depurarlo.