sistema (“cd “) en un progtwig C

Estoy tratando de usar la función system () en un progtwig C.
Por ejemplo, traté de crear un directorio en mi escritorio, usando la función system ().
Mi código:

#include  #include  int main(void) { system("cd c:\\Users\\USER\\Desktop"); system("mkdir test"); return 0; } 

Cuando ejecuto este código, se crea un directorio, pero no en mi escritorio. Se crea en mi directorio de proyectos.
¿Por qué sucede esto?
¿Puedo usar el comando cd en la función system ()? Si no, ¿hay un reemplazo para el comando cd que funcionará con system ()?

Estoy usando el sistema operativo Windows. Estoy tratando de usar system () desde un progtwig C ya que uso el progtwig cmd.
Sé que puedo crear el directorio usando WinAPI sin ningún problema. No quiero usar WinAPI, mi pregunta es cómo puedo hacer que funcione usando system ().

El directorio modificado solo dura la duración del comando del sistema. El comando inicia un progtwig separado, que hereda su directorio actual de su progtwig, pero cuando ese progtwig sale, su directorio actual muere con él.

Puedes usar && para unir los comandos, y funcionará:

 system("cd /DC:\\Users\\USER\\Desktop && mkdir test"); 

También agregué el modificador /D , o el comando de CD no cambiaba la letra de la unidad si se llamaba desde una unidad diferente.

Sin embargo, mkdir es perfectamente capaz de aceptar una ruta completa, por lo que simplemente podría hacer:

 system("mkdir C:\\Users\\USER\\Desktop\\test"); 

Cuando dices system("some shell command"); , el progtwig genera un shell para ejecutar el comando. El shell tiene su propia idea del directorio actual, separado de su progtwig. El cd shell está en el directorio tal como se lo solicitó, y luego muere, sin afectar el CWD de su proceso.

Simplemente podría decir _chdir("c:\\Users\\User\\Desktop"); para establecer el directorio actual antes de ejecutar el comando “mkdir”. El shell que se genera para ejecutarlo heredará el directorio actual de su progtwig y creará la carpeta en el lugar correcto.

(Para el caso, también podría decir _mkdir("test") y dejar de usar el system innecesariamente. Solo debe buscar el system cuando esté tratando de hacer algo que valga la pena ejecutar un progtwig / shell externo).

Tienes que realizar ambos comandos en una sola línea como esta,

 system("cd c:\\Users\\USER\\Desktop && mkdir test");