Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(void)
- {
- char **string_array,**ref;
- char *months[] = { "January", "February", "March", "April", "May",
- "June", "July", "August", "September", "October",
- "November", "December" };
- char **puntero=months;
- string_array=malloc( sizeof (char*) *(sizeof (months) / sizeof (months[0]) ));//Reserva para 12 strings en la heap
- ref=string_array;//Guarda la direccion de origen del puntero string_array recien reservado
- for (int i=0;i<12;i++){
- printf ("%s \t\t Reserva la linea y con %d chars \n",months[i] ,strlen(months[i]));
- string_array[i]=malloc (strlen (months[i])*(sizeof (char)));//Reserva memoria para cada linea ...
- }
- //printf (" Tamano array month= %d \n",(sizeof (months) / sizeof (months[0]) ));//Tamano array de strings
- //Muestra desde un puntero el array de strings que contiene los meses
- for (int i=0 ; i < (sizeof (months) / sizeof (months[0]) ) ;i++){
- printf ("%d , mes %s \n" ,strlen (*puntero),*puntero);
- (puntero)++;
- }
- puntero=months;//Reset puntero, puntero aupunta al array de meses ...
- printf ("direccion puntero apuntando array de meses =%p \n",puntero);
- //Copia a un array dinamico en heap el array de meses
- for (int i=0 ; i < (sizeof (months) / sizeof (months[0]) ) ;i++){
- printf ("Copiando numero =%d , puntero1=%p ,puntero2=%p \n",i,puntero,string_array);
- memcpy (*string_array,*puntero,strlen (*puntero));//Copia en la HEAP ......
- (puntero)++;//Avanzo punteros
- (string_array)++;
- }
- string_array=ref;//string_array vuelve a apuntar al inicio ;)
- // Muestra lo que ha copiado en la HEAP
- for (int i=0;i<12;i++){
- printf ("%s \n",string_array[i]);
- free(string_array[i]);//Aprovech para Liberar lineas de strings ...
- }
- free (string_array );//Libera todo el string_array reservado en heap
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement