我刚刚发现了一小段代码,让我在不使用system()的情况下使用windows API创建目录。唯一的问题是我无法在子目录中创建目录。 例如
#include<windows.h>
int main(){
CreateDirectory ("C:\\random", NULL);
return 0;
}
在C中创建一个名为random的文件夹。
但如果我这样做
#include<windows.h>
int main(){
CreateDirectory ("C:\\Users\morons", NULL);
return 0;
}
它在名为Usersmorons的C che文件夹中创建,而不是在Users下创建文件夹morons。 有什么建议吗?
答案 0 :(得分:36)
您需要管理员权限才能在C:\ Users中创建或删除文件夹。确保您以管理员身份运行.exe,以确保您拥有这些权限。如果不这样做,那么CreateDirectory将失败。
要获取返回的错误,请使用GetLastError。有关可能返回的错误的参考,请参阅
处的“返回值”部分http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx
此外,您正在寻找的代码是
CreateDirectory ("C:\\Users\\morons", NULL);
因为在“蠢货”之前需要有一个“\\”
答案 1 :(得分:20)
你需要另外一个反斜杠:
CreateDirectory ("C:\\Users\\morons", NULL);
答案 2 :(得分:0)
使Windows应用程序跨平台,使用的CreateDirectory()
c ++ 17标准现在具有std::filesystem::create_directories
#include<iostream>
#include <filesystem>
int main()
{
std::filesystem::create_directories("C:\\newfolder\\morons");
}
需要将makefile中的内容更改为-std=c++17
,并更新为支持c ++ 17的GCC编译器。
在Visual Studio中,按照步骤here启用c ++ 17