Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con SHUTDOWN

Estas en el tema de Problemas con SHUTDOWN en el foro de C/C++ en Foros del Web. Hola a todos Me podrían decir porque el programa no me toma el valor de variable "segundos"...? Código: if(quecase == 14) { int segundos = ...
  #1 (permalink)  
Antiguo 07/07/2008, 19:53
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Problemas con SHUTDOWN

Hola a todos
Me podrían decir porque el programa no me toma
el valor de variable "segundos"...?

Código:
if(quecase == 14)
{
    int segundos = 0;
    std::cout << " Ingrese la cantidad de segundos que el equipo" << std::endl
    << " debe esperar para apagarse: ";      
    std::cin >> segundos;
    system("SHUTDOWN -s -t segundos");
}
También quisiera saber si para C++ alguien conoce
otra manera de hacer esto.-

Desde ya muchas gracias por la ayuda que deseen brindarme.-
El autodidacta DanielC++
  #2 (permalink)  
Antiguo 07/07/2008, 23:36
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años
Puntos: 2
Respuesta: Problemas con SHUTDOWN

por que esta entre parentesis
("SHUTDOWN -s -t segundos")

la toma como si fuera una cadena
  #3 (permalink)  
Antiguo 08/07/2008, 07:15
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con SHUTDOWN

Hola Fayca
Gracias por contestar, el tema es como se hace para enviar
una cadena a system (que es lo que corresponde) y que el
parámetro "segundos" no sea tomado como un literal de cadena
sino que se pase el valor de la variable.-

Un gran saludo
El autodidacta DanielC++
  #4 (permalink)  
Antiguo 08/07/2008, 08:37
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Respuesta: Problemas con SHUTDOWN

No la toma porque la cadena contiene la palabra segundos, en ninguna parte le indicas que tome el valor almacenado en la variable segundos.

Ya que estás trabajando con C++ usa la clase stringstream para convertir el entero a cadena y luego concatenas, algo así:

Código:
string comando = "SHUTDOWN -s -t ";
int segundos = 12;
stringstream z;
z << segundos;
comando = comando + z.str();
Es lo que se me ocurre ahorita, tal vez hay una mejor forma de hacerlo...también puedes hacerlo usando las funciones ANSI C (por ejemplo sprintf). Pero trato en lo posible de no mezclar C con C++, así se mantiene un buen estilo de programación.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 09/07/2008, 08:54
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con SHUTDOWN

Hola _Lucifer_
Te pido una ayudita mas para completar el código,
desconozco totalmente como debo poner "comando"
dentro de system();.-

Código:
#include <iostream>
#include <string>
#include <sstream>

int main(int argv, char *argc[])
{
   using namespace std;    
   string comando = "SHUTDOWN -s -t ";
   int segundos = 90;
   stringstream z;
   z << segundos;
   comando = comando + z.str();
   system(...?);
   return 0;
}
Desde muchas gracias
El autodidacta DanielC++
  #6 (permalink)  
Antiguo 09/07/2008, 08:58
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Respuesta: Problemas con SHUTDOWN

Código:
#include <iostream>
#include <string>
#include <sstream>

int main(int argv, char *argc[])
{
   using namespace std;    
   string comando = "SHUTDOWN -s -t ";
   int segundos = 90;
   stringstream z;
   z << segundos;
   comando = comando + z.str();
  system(comando.c_str());
   return 0;
}
Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #7 (permalink)  
Antiguo 09/07/2008, 10:14
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con SHUTDOWN

Hola _Lucifer_
Muchas gracias por tú invalorable ayuda

Hasta la proxima
El autodidacta DanielC++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.