问题描述
如何在给定用户下使用 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 API 和 directory management 的更多信息。
您可以将 system 与某些特定于操作系统的 MKDIR
命令一起使用,但这效率较低(并且您仍然需要处理失败)。
从现有的开源代码中汲取灵感。
(例如 GNU findutils)
sprintf(mkdir,"MKDIR Desktop\\%i",b);
您使用 sprintf 是危险的,因为潜在的 buffer overflow。考虑使用 snprintf
。