El primero con strtoks, el segundo corrigiendo lo que tenias y al final recomendaciones tras leer lo que quieres hacer.
char* pt;
char param[100];
char copia[1024];
int i=0;
strcpy(copia,comando); // strtok chafa la cadena
pt = strtok(copia, " ");
strcpy(param, pt);
i++;
printf("ejecutar : %s \n", pt);
while ( pt = strtok(NULL," ") != NULL )
{
/* ... aqui tienes pt = parametro */
i++;
printf("parametro %d : %s \n",i, pt);
}
Corrigiendo lo que tu tienes hecho, creo que el "if" de mirar si es alfanumerico deberia ir dentro del bucle :
gets(comando);
char parametros = (char) malloc(1024*sizeof(char));
[...]
if (isalnum(comando)){
while(comando!=(int)' ' && comando!=0){
parametros[p]=comando;
i++;p++;
}
parametros[p]=0;
printf("El parametro es %s\n",parametros);
}
->
gets(comando);
char *parametros = (char*) malloc(1024*sizeof(char));
[...]
i=0;
p=0;
while((comando[i]!=' ') && (comando[i]!='\0')){
if (isalnum(comando[i])){
parametros[p]=comando[i];
p++;
}
i++;
}
parametros[p]='\0';
printf("El parametro es %s\n",parametros);
}
Editado:
A ver, tu trocito de codigo solo coje un parametrito, lo logico seria cojerlos todos y almacenarlos en un "argv" , o lo que es lo mismo un vector de cadenas :
char argt[10][100];
// 10 parametros maximo de 100 caracteres de largo ( por ej ).
y meter los parametros en esa variable, en el codigo de arriba de los que he puesto, seria cambiar:
/* ... aqui tienes pt = parametro */
por
strcpy(argt, pt);
Ademas en "ejecutar" meterias el que va justo encima del bucle, espero que te haya servido de ayuda.