Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: soyloqbuskas en 23 Enero 2012, 23:17 pm



Título: Funcion en C
Publicado por: soyloqbuskas en 23 Enero 2012, 23:17 pm
¡Buenas a todos!

Estoy intentado hacer una funcion y ni si quiera soy capaz de declararla...
Esta es la definicion de la variables que luego le voy a pasar a mi funcion:
Código:
        const char orden;
        int *backgr;
        int IDEntrada; //Posible redireccion de entreda a traves (pipes)
int IDSalida; //Posible redireccion de salida a traves (pipes)
char ** ArrayParser; //Array para alamacenar la salida de la orden parser_orden

y yo estoy intentado declarar la funcion asi....
Código:
char **parser_orden(const char *orden, int &IDEntrada, int &IDSalida,int *backgr) {
     return orden;
}

y no me compila....me dice que orden no esta declardo....

¿Alguna idea?

¡Un saludo!


Título: Re: Funcion en C
Publicado por: x64core en 23 Enero 2012, 23:40 pm
y todo el codigo desde como llamas, hasta la variable que resibe el retorno?
y c++ es bien estricto si decis que vas a devolver un puntero a puntero, tenes que devolver un puntero a puntero, no un puntero nada mas


Título: Re: Funcion en C
Publicado por: soyloqbuskas en 23 Enero 2012, 23:45 pm
¡Buenas RHL!

Lo del return ya me suponia que iba a estar mal...pero bueno....el codigo de lo que hace la funcion creo que lo puedo hacer....

Solo necesito hacer la declaracion....pero bueno, aqui te dejo algo mas de codigo....
Código:
char **parser_orden(const char *orden, int &IDEntrada, int &IDSalida,int *backgr) {
     return orden;
}

void ejecutar_orden(const char *orden, int *backgr) {
//Se encarga de ejecutar una orden

int IDEntrada; //Posible redireccion de entreda a traves (pipes)
int IDSalida; //Posible redireccion de salida a traves (pipes)
char ** ArrayParser; //Array para alamacenar la salida de la orden parser_orden
int result;
int MAXPATHLEN=100;
bool ok=false;
char path[MAXPATHLEN];


ArrayParser = parser_orden(orden, &IDEntrada, &IDSalida, backgr);
//Convierte la entrada de una orden en un array charr **, elimiando los espacios
//backgr devuelve 1 si encuentra el simbolo &
.
.
.
.


Gracias, un saludo.

EI: juntando mensajes.

Bueno, he conseguido mejorar algo...
Código:
char **parser_orden(const char *orden, int *IDEntrada, int *IDSalida,int *backgr) {
     char **ord=*orden;
     return ord;
}


Ahora la declaracion es correcta, pero me da error en la asignacion porque no hago un cast.....
¿Cual es el cast que debo poner?


Título: Re: Funcion en C
Publicado por: Ferno en 24 Enero 2012, 00:29 am
Lo que estás haciendo en dicha asignación es asignarle a un puntero de puntero de char, un char.
La variable orden es un puntero a char, por ende (*orden) es un char. Eso lo estás asignando a un puntero a puntero a char ==> La asignación no es correcta.
Vi todo el hilo muy por arriba, pero si intentas castear dicha asignación entonces

Código
  1. char** ord = (char**)orden;
  2.  
o prueba con:

Código
  1. char** ord = &orden;


Título: Re: Funcion en C
Publicado por: soyloqbuskas en 24 Enero 2012, 00:48 am
¡Gracias Ferno!

La opcion:
Código:
char** ord = &orden;
ya la habia probado y no funciona

Pero la opcion:
Código:
char** ord = (char**)orden;
si que funciona jeje

Un saludo.