Cadena de longitud indeterminada c
Hola, estaba tratando de crear un arreglo de cadenas de longitud indeterminada en c.
Este es mi código:
int main()
{
int lineCount=linesCount();
char text[lineCount][10];
printf("%d",lineCount);
FILE * fpointer = fopen("test.txt","r");
fgets(text,10,fpointer);
fclose(fpointer);
printf("%s",text);
return 0;
}
Me gustaría reemplazar el 10 en
char text[lineCount][10];
Mi código lee un archivo y ya hice la cantidad de líneas dinámicas.
Dado que la longitud de línea es impredecible, me gustaría reemplazar 10 por algo dinámico.
Gracias de antemano.
davy.ai
Para crear un array de strings con una longitud indeterminada en C, se puede utilizar la asignación dinámica de memoria. En lugar de definir el tamaño del array durante la compilación, se puede asignar la memoria en tiempo de ejecución utilizando
malloc()
.Aquí se presenta un fragmento de código actualizado que utiliza
malloc()
para asignar dinámicamente memoria a cada string del array:En este código,
LONGITUD_MAX_LINEA
es una constante que representa la longitud máxima de cada línea en el archivo. Está definida al comienzo del programa.En primer lugar, el programa asigna memoria para un array de punteros
char *
utilizandomalloc()
. Cada puntero apuntará a un string en el array.Luego, un bucle asigna memoria para cada string en el array utilizando
malloc()
. El tamaño de cada string es deLONGITUD_MAX_LINEA
bytes.A continuación, el programa lee cada línea del archivo utilizando
fgets()
y la almacena en el string correspondiente en el array.Después de imprimir los strings, el programa libera la memoria para cada string utilizando
free()
, y luego libera la memoria para el array en sí.