¿Cómo puedo asignar suficiente memoria para una línea de texto leído desde un archivo en c?

El objective de mi progtwig que necesito escribir es que leerá en una línea de un archivo SOLAMENTE UNA VEZ (es decir, cuando lo lea una vez, no debería volver al archivo y leerlo de nuevo), y debería almacenar esa línea. en una serie de caracteres. El tamaño de la matriz debe ser lo suficientemente grande como para contener la línea de texto. Además, se recomienda no usar getchar y, en su lugar, utilizar fgets.

En el peor de los casos, solo hay una línea de texto en el archivo, por lo que necesitaría obtener el tamaño del archivo y asignar tanta memoria para el búfer.

#include  #include  long buffLen = _filelength(...); // check bufLen for errors char* buffer = (char*)malloc((size_t)buffLen); // check for allocation failures (it could be an 8 gigabyte file) 

Si su CRT no admite la función _filelength posix, observe este hilo y también tenga en cuenta que un long no es de 64 bits en todas las plataformas, por lo que es mejor usar un método que devuelva un valor de 64 bits.

  ssize_t getline(char **lineptr, size_t *n, FILE *stream); ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream); //this two function will help you,you can man them on linux 

fget() alrededor de fget() hasta que se devuelva NULL y feof() sea ​​verdadero o la lectura de los datos termine con un \n . Para cada iteración, lea los datos en un búfer temporal y adjúntelos a un búfer final, que aumenta de tamaño en consecuencia.