<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hola Mon,<br>
    <br>
    El error es que liberas la memoria estando aún dentro de la funcion.
    "<font face="arial, helvetica, sans-serif">free(s);"</font><br>
    <br>
    <font face="arial, helvetica, sans-serif"><span
        class="Apple-tab-span" style="white-space:pre"></span>has de
      liberar la memoria despues de cargar la función o bien mostrar el
      array antes de liberar la memoria, sino, no tiene sentido que
      reserves la memoria dentro de la función "Split" y antes de salir
      de ella, sin mostrar el contenido de lo que deseas, liberar la
      memoria dinámica.</font><br>
    <br>
    Resumiendo, por ejemplo, puedes poner el el bucle de mostrar el
    array que tienes en la funcion principal (main) dentro de la funcion
    "Split" y antes de liberar la memoria (free(s)) o bien liberar la
    memoria en la función principal despues de mostrar el array en la
    funcion principal.<br>
    <br>
    <br>
    Espero que te ayude,<br>
    <br>
    <br>
    Un Saludo<br>
    <br>
    <br>
    David Marin<br>
    <br>
    <br>
    <br>
    On 30/04/2012 18:17, MON wrote:
    <blockquote
      cite="mid:1335802646.54834.YahooMailNeo@web132102.mail.ird.yahoo.com"
      type="cite">
      <div style="color:#000; background-color:#fff; font-family:arial,
        helvetica, sans-serif;font-size:12pt">
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; ">Se trata de una función a la que se le
          envía como argumento una frase y sirviéndome de la función
          "strtok" debe devolver, en un array (char **), cada una de las
          palabras que la componen. Sin embargo, se produce un error en
          los dos primeros elementos del array.</div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; "><br>
        </div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; ">Os transcribo el código (indicando al final
          el error que se produce)</div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; "><br>
        </div>
        <div><font face="arial, helvetica, sans-serif">char
            **split(const char *palabra)</font></div>
        <div><font face="arial, helvetica, sans-serif">{</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>char

            *s   = NULL;</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>char

            *tmp = NULL;</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>char

            **p  = NULL;</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>int

            count = 0;  //contador inicial de elementos del array (char
            **)</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>s
            = (char *)malloc( 1 + strlen(palabra) );</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>strcpy(s,

            palabra);</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>tmp

            = strtok(s, " ");</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>while(

            NULL != tmp )</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>{</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>p
            = (char **)realloc(p, sizeof(char *) * (count + 1) );  // un
            nuevo elemento para el array</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>p[count]

            = tmp;   // asigno al elemento la palabra obtenida por
            "strtok"</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>tmp

            = strtok(NULL, " ");  // llamo a la función</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>count++;

              // incremento el contador</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>}</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>free(s);</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>s
            = 0;</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>//
            el último elemento del array debe ser nulo</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>p
            = (char **)realloc(p, sizeof(char *) * (count + 1) );</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>p[count]

            = '\0';</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>return

            p;</font></div>
        <div><font face="arial, helvetica, sans-serif">}</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif">int main(const
            int argc, char * argv[])</font></div>
        <div><font face="arial, helvetica, sans-serif">{</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>//
            llamamos a la función</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>char

            **p = split("Lo que el viento se llevó");</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>//
            recorremos "p" para mostrar cada una de las palabra</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>while(

            *p != NULL )</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>{</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>printf("%s\n",

            *p);</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>++p;</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>}</font></div>
        <div><span class="Apple-tab-span" style="white-space:pre"><font
              face="arial, helvetica, sans-serif"> </font></span></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>/*</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             ¡LO QUE SALE POR PANTALLA! ¡ERROR!</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>  </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             [un espacio vacío en lugar de "Lo"]</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             [otro espacio vacío en lugar de "que"]</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             el</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             viento</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             se</font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>
             llevó</font></div>
        <div><font face="arial, helvetica, sans-serif"> */</font></div>
        <div><font face="arial, helvetica, sans-serif"><br>
          </font></div>
        <div><font face="arial, helvetica, sans-serif"><span
              class="Apple-tab-span" style="white-space:pre"> </span>return

            0;</font></div>
        <div><font face="arial, helvetica, sans-serif">}</font><font
            face="arial, helvetica, sans-serif" size="3"> </font></div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; "><br>
        </div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; "><br>
        </div>
        <div style="font-family: arial, helvetica, sans-serif;
          font-size: 12pt; ">Me podéis aclarar dónde falla mi código.
          ¡Gracias !</div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Lista de correo Cconclase <a class="moz-txt-link-abbreviated" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
<a class="moz-txt-link-freetext" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a>
Bajas: <a class="moz-txt-link-freetext" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a></pre>
    </blockquote>
    <br>
    <br>
  </body>
</html>