我正在尝试在C程序中使用system()函数
例如,我尝试使用system()函数在桌面上创建目录。
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("cd c:\\Users\\USER\\Desktop");
system("mkdir test");
return 0;
}
当我运行此代码时,会创建一个目录,但不会在我的桌面上创建。它在我的项目目录中创建
为什么会这样?
我可以在system()函数中使用cd命令吗?如果没有,是否可以替换cd命令,它将与system()一起使用?
我正在使用Windows操作系统。我正在尝试使用C程序中的system(),因为我使用的是cmd程序 我知道我可以使用WinAPI创建目录而没有任何问题。我不想使用WinAPI,我的问题是如何使用system()使其工作。
答案 0 :(得分:11)
更改的目录仅持续系统命令的持续时间。该命令启动一个单独的程序,该程序从程序继承其当前目录,但是当该程序退出当前目录时,它就会死掉。
您可以使用&&
将命令连接在一起,它将起作用:
system("cd /D C:\\Users\\USER\\Desktop && mkdir test");
我还添加了/D
开关,如果从其他驱动器调用CD命令,则不会更改驱动器号。
但是,mkdir完全有能力接受完整路径,所以你可以这样做:
system("mkdir C:\\Users\\USER\\Desktop\\test");
答案 1 :(得分:7)
当你说system("some shell command");
时,程序会生成一个shell来运行命令。 shell有自己的当前目录的想法,与你的程序分开。 shell cd
就像你要求的那样进入目录,然后死掉,让你的进程的CWD不受影响。
在运行“mkdir”命令之前,您可以简单地说_chdir("c:\\Users\\User\\Desktop");
来设置当前目录。然后生成运行它的shell将继承程序的当前目录并使文件夹位于正确的位置。
(就此而言,您也可以说_mkdir("test")
,并且不必要地停止使用system
。当您尝试做一些值得运行的事情时,您应该只到达system
一个外部程序/ shell。)
答案 2 :(得分:1)
你必须在一行上执行这两个命令,
system("cd c:\\Users\\USER\\Desktop && mkdir test");