<html><body><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></body></html>