C/Visual C - Convertir a char para execl

   
Vista:

Convertir a char para execl

Publicado por Alfonso (4 intervenciones) el 09/05/2009 01:00:29
Hola, quiero pasar 1 int del tipo int pepe a un char del tipo char manoli[1], ya que posteriormente quiero pasar este parámetro mediante un execl a otro proceso y por lo que he leído, el parámetro a pasar tiene que ser un char.
También he leído por ahí que se puede usar la función itoa pero cuando voy a compilar me da un error del tipo: undefined reference to 'itoa'. La librería stdio.h está referenciada correctamente (atoi funciona sin problemas).
Estoy usando la función del siguiente modo pero me da el erro que comento:
int pepe;
char manoli;
itoa(pepe,manoli,10);

¿Que otras opciones tengo? ¿Como podría solucionar este error?
Gracias.
Alfonso
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Convertir a char para execl

Publicado por aquiles (16 intervenciones) el 09/05/2009 03:46:13
int pepe;
char manoli[12]; // cadena de 12 caracteres...

// opcion 1:
pepe = 123456789;
itoa( pepe, manoli, 10 ); // con itoa...
printf( "manoli = %s ", manoli );

// opcion2:
pepe = 987654321;
sprintf( manoli, "%i", pepe ); // con sprintf....
printf( "manoli = %s ", manoli );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir a char para execl

Publicado por Alfonso (4 intervenciones) el 09/05/2009 18:39:31
Muchas gracias Aquiles,
la cuestión es que quiero hacer esta conversión para pasar por parámetro 2 valores numéricos a través de la función execl pero siguen sin pasar bien.

Lo que hago es:

char comb_ini[2],comb_fin[2];
int combinicial=31;
int combifinal=63;

sprintf(comb_ini,"%i",combinicial);
sprinf(comb_fin,"%i",combifinal);

execl("programa",comb_ini,comb_fin,NULL);

En "programa" tengo lo siguiente:

main(int argc,char *argv[])
comb_ini=atoi(argv[0]);
comb_fin=atoi(argv[1]);

El caso es que la combinación final siempre sale bien pero la inicial, o sale con el último valor de la final o vacío.

¿Es un problema de la conversión o del paso de parámetros?

Muchas gracias por la ayuda. Llevo pegándome con este tema ni sé el tiempo y no hay manera....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir a char para execl

Publicado por aquiles (16 intervenciones) el 10/05/2009 13:15:36
// las cadenas siempre tienen que tener un byte extra para poder almacenar
// el valor NULL 'cero' que indica fin de cadena...

char comb_ini[2+1],comb_fin[2+1]; // 3 valores, siempre con base cero del 0 al 2.
int combinicial=31;
int combifinal=63;

sprintf(comb_ini,"%i",combinicial);
sprintf(comb_fin,"%i",combifinal );

// forma en que se almacena comb_ini:
// comb_ini[0] = '3';
// comb_ini[1] = '1';
// comb_ini[2] = '0';

// forma en que se almacena comb_end:
// comb_end[0] = '6';
// comb_end[1] = '3';
// comb_end[2] = '0';


printf( "%s - %s ", comb_ini, comb_fin );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir a char para execl

Publicado por Alfonso (4 intervenciones) el 10/05/2009 13:53:58
Muchas gracias, no había caído en lo del 0 !.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir a char para execl

Publicado por aquiles (16 intervenciones) el 10/05/2009 16:04:44
#include< stdio.h >
#include< stdlib.h >


// normalmente el argv[0] -- devuelve el 'path' del archivo ejecutado...

// ejemplo:

// c:mi programa est.exe -- si el archivo se ejecuta desde otro directorio...
// test.exe -- si se ejecuta del directorio donde se encuentra el archivo.

// y tus argumentos desde el argv[1]...

/* main : */
void main( int argc, char *argv[] )
{
int i;
for( i = 0; i < argc; i++ )
{
printf( "argv[%i] = %s ", i, argv[i] ); // muestra los argumentos...
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar