Duda "rara" sobre C y la funcion system

Buenas, hace poco he descubierto que existe la funcion system en el lenguaje C, y ejectuando los pogramas que edito en linux puedo hacer cualquier chorrada que quiera, como abrir firefox y otro programa, abrir un archivo etc.
Ahora estoy interesado en ejecutar este tipo de programas en windows, he conseguido compilar el codigo a un .exe que funciona y no tengo problemas con programas como :
#include<stdio.h>
int main(){
int x;   
   while(1){
   printf("Deseas la ayuda sobre el comando move de cmd?\n 1 - Si \n 2 - No\n");
   scanf("%d",&x);
   if (x==1)
   system ( " help move ");
   else if (x==2)
   printf ("Ok pues na \n");
}
}


Pero otro tipo de programas que me abran algun archivo o programa me dan error este es el codigo que se me ocurre, supongo que por ahi van los tiros, si es que lo que digo es posible.
#include<stdio.h>
int main(){
int x;   
   while(1){
   printf("Deseas abrir firefox?\n 1 - Si \n 2 - No\n");
   scanf("%d",&x);
   if (x==1)
   system ( " \"Archivos de programa\Mozilla Firefox\firefox.exe\" ");
   else if (x==2)
   printf ("Ok pues na \n");
}
}



La verdad es que no sabia muy bien donde postear esto... alomejor General es el lugar adecuado pero no se... creo que aqui tendreis mas idea... si no lo borro y au.
necesitas el "\" al inicio de del string, no estoy seguro si necesitas las comillas extra.
prueba con
system ("\"\\Archivos de programa\Mozilla Firefox\firefox.exe\"");

o tambien
system ("\\Archivos de programa\Mozilla Firefox\firefox.exe");
Compilar compila pero al ejecutar el exe en windows me devuelve despues de pulsar "1"
"\Archivos" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable."


Sera por que falta la letra del disco duro? C:\? como era la sintaxis?

De hecho creo que el codigo exacto seria este
#include<stdio.h>
int main(){
int x;   
   while(1){
   printf("Deseas la ayuda sobre el comando move de cmd?\n 1 - Si \n 2 - No\n");
   scanf("%d",&x);
   if (x==1)
   system ("C:\\"Archivos de programa\Mozilla Firefox\firefox.exe\" ");
   else if (x==2)
   printf ("Ok pues na \n");
}
}

Pero me da errores de compilacion:
system.c:8: error: expected ‘)’ before ‘Archivos’
system.c:8: error: stray ‘\’ in program
system.c:8: error: stray ‘\’ in program
system.c:8: error: stray ‘\’ in program


PD: Me doy cuenta de que esto tiene mas que ver con el cmd de windows que con otra cosa, pero me interesa saber tambien como no poducir conflictos a la hora de compilar, lo de \" es una buena idea.

Y sobretodo muchas gracias por la atenciony paciencia =)
Es basicamente un problema de "escapados".
Dentro de System(); tienes que poner lo que ejecuta entre comillas, por ser string, pero la string en si, empieza con comillas (por tanto, "escapadas" con \, y ademas, cada \ de la ruta, escapada con otra \)

Algo tipo:

System("\"C:\\winsux\\algo con espacios\\algo mas.exe parametro1 parametro2\"");
Gracias, soys los putos amos, muchas gracias =)
Si alguien le interesa el codigo ha quedado asi:
#include<stdio.h>
int main(){
int x;   
   while(1){
   printf("Deseas iniciar firefox?\n 1 - Si \n 2 - No\n");
   scanf("%d",&x);
   if (x==1)
   system ("C:\\\"Archivos de programa\\Mozilla Firefox\\firefox.exe\" ");
   else if (x==2)
   printf ("Ok pues na \n");
}
}
4 respuestas