系统(“cd <path>”)在C程序中

我试图在C程序中使用system()函数。
例如,我尝试使用system()函数在桌面上创build一个目录。
我的代码:

#include <stdio.h> #include <stdlib.h> int main(void) { system("cd c:\\Users\\USER\\Desktop"); system("mkdir test"); return 0; } 

当我运行这个代码时,会创build一个目录,但不在我的桌面上。 它是在我的项目目录中创build的。
为什么发生这种情况?
我可以在system()函数中使用cd命令吗? 如果没有,是否有一个替代cd命令,将与system()?

我正在使用Windows操作系统。 我试图从C程序中使用system(),因为我使用cmd程序。
我知道我可以使用WinAPI创build目录,没有任何问题。 我不想使用WinAPI,我的问题是如何使它使用system()。

更改后的目录只会持续系统命令的持续时间。 该命令启动一个单独的程序,它从您的程序inheritance其当前目录,但当该程序退出时,其当前目录将随之死亡。

您可以使用&&将这些命令一起join,它将起作用:

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

我还添加了/D开关,否则如果从不同的驱动器调用CD命令,则不会更改驱动器号。

但是,mkdir完全可以接受完整的path,所以你可以简单地做:

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

当你说system("some shell command"); ,该程序产生一个shell来运行该命令。 shell对当前目录有自己的想法,与程序分开。 shell按照你的要求cd到目录,然后死掉,使你的进程的CWD不受影响。

你可以简单的说_chdir("c:\\Users\\User\\Desktop"); 在运行“mkdir”命令之前设置当前目录。 运行它的shell将inheritance你的程序的当前目录,并将文件夹放在正确的位置。

(对于这个问题,你也可以说_mkdir("test") ,并且停止不必要的使用system 。当你试图做一些值得运行一个外部程序/ shell的东西的时候,你应该只访问system

你必须像这样在一行上执行这两个命令,

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