Ayuda con reserva de memoria dinámica.
Hola, me preguntaba si alguien podría explicarme como reservar memoria dinámica para cadenas de caracteres (punteros a punteros), porque yo lo he intentado de la siguiente forma y me da error:
/*DECLARACIÓN:*/
**pe=NULL
/*RESERVA DE MEMORIA:*/
do{
printf("n ¿Cuántas palabras quieres introducir?: ");
correcto=scanf("%d", &npal);
fflush(stdin);
}while(!correcto||npal<1);
if((pe=(char**)malloc(npal*sizeof(char*)))==NULL)
{
printf("n INSUFICIENTE ESPACIO EN MEMORIA.");
return;
}
for(j=0;j<letras;j++)
if(pe[j]=(char)malloc(letras*sizeof(char))==NULL)
{
printf("n INSUFICIENTE ESPACIO EN MEMORIA.");
return;
}
Gracias por anticipado.
/*DECLARACIÓN:*/
**pe=NULL
/*RESERVA DE MEMORIA:*/
do{
printf("n ¿Cuántas palabras quieres introducir?: ");
correcto=scanf("%d", &npal);
fflush(stdin);
}while(!correcto||npal<1);
if((pe=(char**)malloc(npal*sizeof(char*)))==NULL)
{
printf("n INSUFICIENTE ESPACIO EN MEMORIA.");
return;
}
for(j=0;j<letras;j++)
if(pe[j]=(char)malloc(letras*sizeof(char))==NULL)
{
printf("n INSUFICIENTE ESPACIO EN MEMORIA.");
return;
}
Gracias por anticipado.
Joder lo que me ha costado encontrarte el error.
Esto es lo que tu pones:
for(j=0;j<letras;j++)
if(pe[j]=(char)malloc(letras*sizeof(char))==NULL)
{
...
el error esta en el if, te has comido el operador indirección en el casting, seria algo asi.
if(pe[j]=(char *)malloc(letras*sizeof(char))==NULL)
Como ves un puñetero asterisco, espero q sea eso lo q te falle y no que has transcrito mal el programa.
Suerte
Esto es lo que tu pones:
for(j=0;j<letras;j++)
if(pe[j]=(char)malloc(letras*sizeof(char))==NULL)
{
...
el error esta en el if, te has comido el operador indirección en el casting, seria algo asi.
if(pe[j]=(char *)malloc(letras*sizeof(char))==NULL)
Como ves un puñetero asterisco, espero q sea eso lo q te falle y no que has transcrito mal el programa.
Suerte
