[C con Clase] problema con system

Steven Davidson srd4121 en njit.edu
Jue Jul 29 18:44:24 CEST 2010


Hola Martín,

Martin Chiappero wrote:
> A ver si le apunto a la parte que no entiendes que ademas es la que
> me falto explicar bien :-(
> 
> la matriz hd[0] contiene la siguiente linea de texto "Disco /dev/hda:
> 80.0 GB" y lo que yo hago es sacar de ella solo la parte que me sirve
> para el comando que es "/dev/hda" y la guardo en "discoelegido"
> 
> esta parte funciona bien porque si le hago un printf a disco elegido
> me tira /dev/hda que es lo que busco, pero cuando lo implemento en el
> comando no corre.
> 
> si anulo esta parte e inicializo con un char discoelegido="/dev/hda";
> si corre bien, por eso creo que el tema viene por el lado de la
> variable

He estado siguiendo los comentarios de este hilo. De todos los códigos 
fuente que mandas, tengo que reconocer que hay algo que me "preocupa". 
Me sorprende que te funcionen las invocaciones a 'sprintf()' al 
sobreescribir el array 'comando'. Escribes esto:

sprintf( comando, "%s%s", comando, discoelegido );
sprintf( comando, "%s%s", comando, comando1 );

Si 'sprintf()' se implementa invocando 'strcpy()' o 'strcat()', entonces 
tendrías problemas, porque estas funciones requieren que los arrays no 
se solapen en memoria. De todas maneras, para tu caso, sugiero que uses 
estas dos funciones, ya que no hay necesidad de usar 'sprintf()'. Esto es,

char comando[1024] = "fdisk -l ";  // Definamos un búfer más grande

strcat( comando, discoelegido );
strcat( comando, " > fdisk_l_al_disco.zn" );

Prueba tu código de esta manera. A ver qué sucede.


Espero que esto te sirva.

Steven





Más información sobre la lista de distribución Cconclase