如何在 Windows 中的给定用户下创建文件夹?

问题描述

如何在给定用户下使用 C 程序在 Windows 中创建文件/文件夹?

例如,如果我必须在桌面“C:\Users(user)\Desktop”中做一些事情

我在 C 中使用系统调用,所以我必须用用户替换实际用户名,我该怎么做?

int b = 1; char mkdir[33] = "MKDIR Desktop\\"; sprintf(mkdir,"MKDIR Desktop\\%i",b); system(mkdir);

但是不是在桌面上创建文件,而是在当前目录中继续创建一个名为桌面的文件

解决方法

如果我必须转到 C 中的一个用户中的目录,我该怎么做?

C 语言标准(阅读 Modern C 然后例如 n2126)不知道目录,因此您需要使用一些特定于操作系统的 API。另请参阅 this C reference 网站。

对于 Linux(或 POSIX),阅读 Advanced Linux Programming 然后关于 syscalls(2) 并使用 mkdir(2)

对于 Windows,请阅读有关 Windows APIdirectory management 的更多信息。

您可以将 system 与某些特定于操作系统的 MKDIR 命令一起使用,但这效率较低(并且您仍然需要处理失败)。

从现有的开源代码中汲取灵感。

(例如 GNU findutils

您可以使用跨平台的开源库,例如 GTKGlib

   sprintf(mkdir,"MKDIR Desktop\\%i",b); 

您使用 sprintf 是危险的,因为潜在的 buffer overflow。考虑使用 snprintf