¡Buenas a todos!
Necesito hacer la siguiente funcion:
char **parser_orden(const char *orden) {}
Esta funcion a la que se le pasa una cadena de caracteres, retorna un array de punteros el cual tiene en cada posicion del array un puntero a cada palabra de la cadena que se le pasa por referencia.
Para crear esta funcion me he hecho un programa a parte para ponerlo a prueba, y esto es lo que tengo escrito:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (){
char *orden;
char **aux[10];
char aux1[50];
int i=0; //indica la posicion de un caracter en la variable orden
int j=0; //indica la posicion en la cual hay un puntero a una palabra
int k=0; //indica la posicion de un caracter en la variable auxiliar aux1
printf("Escribe una cadena de caracteres\n");
gets(orden);
for(i=0;i<=strlen(orden);i++){
aux1[k]=(char)orden[i];
k++;
if((orden[i]==' ')||(orden[i]=='\0')){
aux[j]=(char **)aux1; //se que mi fallo esta aqui...
printf("%i\n",j);
k=0;
j++;
}
}
printf("1: %s\n",aux[0]);
printf("2: %s\n",aux[1]);
system("pause");
return 0;
}
Teoricamente, si escribieramos 2 palabras ("hola mundo"), la salida deberia ser:
hola
mundo
Pero no es asi, porque aux[0] y aux[1], apunta al mismo valor.....
¿como puedo rellenar mi array char**aux[10] con punteros a cada una de las palabras de char*orden?
Gracias, un saludo.