有没有办法使用C创建一个“代码”中的文件夹/目录,这是跨平台的?或者我是否必须使用预处理器来说明要使用哪种方法?
答案 0 :(得分:3)
您需要#define
才能执行此操作。
为了让您的代码看起来整洁,您需要使用一个定义Linux功能的代码,以便在编译Windows时转换为等效的Windows功能。
在源文件的顶部,您将在Windows特定部分中拥有此内容:
#include <windows.h>
#define mkdir(dir, mode) _mkdir(dir)
然后你可以调用这样的函数:
mkdir("/tmp/mydir", 0755);
以下是其他一些可能有用的内容:
#define open(name, ...) _open(name, __VA_ARGS__)
#define read(fd, buf, count) _read(fd, buf, count)
#define close(fd) _close(fd)
#define write(fd, buf, count) _write(fd, buf, count)
#define dup2(fd1, fd2) _dup2(fd1, fd2)
#define unlink(file) _unlink(file)
#define rmdir(dir) _rmdir(dir)
#define getpid() _getpid()
#define usleep(t) Sleep((t)/1000)
#define sleep(t) Sleep((t)*1000)
答案 1 :(得分:0)
有没有办法使用C创建一个“代码中”的文件夹/目录,这是跨平台的?
没有。 C语言和标准库根本没有目录的概念。有标准的库函数,特别是fopen()
,它们使用文件名,这个概念包含路径(因此也包含目录),但是the standard specifies:
打开其他(非临时)文件的功能需要一个文件 name,这是一个字符串。 组成有效文件名的规则是 实现定义
(C2011 7.21.3 / 8;强调增加)
我知道这并不能直接解决这个问题,但很难证明是消极的,特别是要简明扼要。我强调指出语言标准甚至不知道目录存在,然后向你保证,特别是它不支持创建目录。
或者我是否必须使用预处理器来说明要使用哪种方法?
这将是一种传统的方式。有几种方法可以实现细节。
答案 2 :(得分:-1)
a lot of operating systems 使用命令 mkdir
创建新目录。因此,我们可以使用它以(主要是)跨平台的方式创建目录。
#include <stdlib.h>
//so we can use system()
稍后,我们可以用这个创建目录
system("mkdir my_dir");