Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2008, 03:31
Tram
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 18 años, 1 mes
Puntos: 0
Explicación código [C]

Hola,
tengo el siguiente código en C

Código:
#include <stdio.h>
#include <stdlib.h>


int main(void){

   char *ad[5];
   int i;
   char *p;

   p=(char *)malloc(100);

   for(i=0; i<100; i++)
      *(p+i)=0;
   
   for(i=0; i<5; i++)
      ad[i]=p + i* 3;   

   for(i=0; i<5; i++)
      gets(ad[i]);
   
   printf(ad[1]-1);
   free(p);

}

Se ejecuta con la siguiente entrada:
hola
examen
el
struct
array

y el resultado por pantalla es "lexael".
Después de hacer varias trazas, no consigo entender cómo funciona exactamente el segundo bucle for. Sé que en cada iteración hace "p+0", "p+3", "p+6",... y que en el array de punteros se van almacenando las líneas que se escriben por teclado ( ad[0]=hola, ad[1]=examen,...) pero luego no consigo ver cómo sale ese resultado. Si alguien me pudiera dar una breve explicación..
Gracias