Ayuda Arrays dinamicos en C
Publicado por Fernando (1 intervención) el 23/05/2006 10:31:21
Hola a todos...
A ver, tengo un problemilla, estoy desarrollando una aplicacion que lee unos datos de un fichero de texto los cuales quiero almacenar en memoria y tengo varias dudas...
Existe una limitacion de cantidad de memoria a reservar con malloc o farmalloc?
El numero de registros que puede tener el fichero va desde 2 lineas hasta 500000, es posible almacenar 500000 lineas de texto en un array de structuras?
la cantidad de caracteres por linea de fichero varia entre 35 y 300.
un ejemplo del fichero seria algo asi:
11221012332110231110112..... puede llegar hasta 300 caracteres
00211223321110231123033...
....
....
puede llegar hasta 500000 lineas.
no consigo hacerlo funcionar, o el puntero se pierde o se me sale del entorno os pongo un ejemplo de lo que estoy haciendo a ver si alguien me puede ayudar...
//*********************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Datos{
char linea[1024]; //array para almacenar las lineas de ficheros
};
main()
{
Datos *pD=NULL;
FILE *po;
char strlinea[1024];
long numLineasFichero=100;//puede variar es una dato que sera de //entrada para el usuario
int intlinea=0;
po=fopen("C:/HFCC/Ficheros/F1.txt", "r");
pD=(Datos *)calloc(numLineasFichero, sizeof(Datos));
while(!feof(po))
{
fgets(strlinea,1024-1, po);
strcpy(pD[intlinea].linea, strlinea);
intlinea++;
}
free(pD);
fclose(po);
}
//**********************************************************
A ver si alguien me puede decir que estoy haciendo mal, pq seguro que en algo estoy fallando y ya no se que mas probar, he probado con malloc, calloc, farmalloc, farcallc, realloc.... y no consigo almacenarlos ya que despues al accedes a los datos me devuelve algo que no es...
Gracias de atemano
A ver, tengo un problemilla, estoy desarrollando una aplicacion que lee unos datos de un fichero de texto los cuales quiero almacenar en memoria y tengo varias dudas...
Existe una limitacion de cantidad de memoria a reservar con malloc o farmalloc?
El numero de registros que puede tener el fichero va desde 2 lineas hasta 500000, es posible almacenar 500000 lineas de texto en un array de structuras?
la cantidad de caracteres por linea de fichero varia entre 35 y 300.
un ejemplo del fichero seria algo asi:
11221012332110231110112..... puede llegar hasta 300 caracteres
00211223321110231123033...
....
....
puede llegar hasta 500000 lineas.
no consigo hacerlo funcionar, o el puntero se pierde o se me sale del entorno os pongo un ejemplo de lo que estoy haciendo a ver si alguien me puede ayudar...
//*********************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Datos{
char linea[1024]; //array para almacenar las lineas de ficheros
};
main()
{
Datos *pD=NULL;
FILE *po;
char strlinea[1024];
long numLineasFichero=100;//puede variar es una dato que sera de //entrada para el usuario
int intlinea=0;
po=fopen("C:/HFCC/Ficheros/F1.txt", "r");
pD=(Datos *)calloc(numLineasFichero, sizeof(Datos));
while(!feof(po))
{
fgets(strlinea,1024-1, po);
strcpy(pD[intlinea].linea, strlinea);
intlinea++;
}
free(pD);
fclose(po);
}
//**********************************************************
A ver si alguien me puede decir que estoy haciendo mal, pq seguro que en algo estoy fallando y ya no se que mas probar, he probado con malloc, calloc, farmalloc, farcallc, realloc.... y no consigo almacenarlos ya que despues al accedes a los datos me devuelve algo que no es...
Gracias de atemano
Valora esta pregunta


0