c - Windows 和 Unix 的文件分隔符

标签 c windows linux path

我有一个应该在 windows 和 unix 系统(Mac、linux 等)上运行的代码,我想访问/删除相对路径中的一些文件,有没有一种方法可以构建路径兼容两种操作系统(如 Java 的 File.separator)?

我想到的最接近的事情是这样的:

#ifdef _WIN32
#define FILE_SEPARATOR   "\\"
#else
#define FILE_SEPARATOR   "/"
#endif

//in windows - ".\\filedir\\filename.txt"
//in *nix - "./filedir/filename.txt"
const char * mypath = "." FILE_SEPARATOR "filedir" FILE_SEPARATOR "filename.txt";

编辑

阅读下面的答案/评论后 - 我想补充一点,确认 Windows XP 或更新版本符合 POSIX 对我来说就足够了。

最佳答案

Windows 支持符合 POSIX 标准的路径分隔符。

这意味着您可以在构建路径和使用 Windows API 或 C IO 函数时安全地使用正斜杠 /

但是,如果您的代码充当一个库并公开一个接受和返回路径的 API,您可能必须对输入路径进行 posixify 并取消对返回路径的 posixify。这会增加一点负担,但会让您的消费者感觉更原生。

关于c - Windows 和 Unix 的文件分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881806/

相关文章:

char * 字符串转换为十六进制 uint8_t 值以修改 .hex 文件

C 程序不打印第一行(行),但打印所有其他行

windows - 如何以编程方式调用 "Log on as a service Properties"窗口?

c++ - 多次复制和粘贴

c - Maikefile错误make : *** [prepare] Error 127

c - xv6 调度程序 - proc 从不!= 0

java - JNA 代码在 OSx 中运行良好,但无法在 Linux 中从 C 共享对象文件中查找函数

python - S3 的 AWS CLI - Errno 2 没有这样的文件或目录 : u'

c++ - 发生内存不足错误时怎么办?

linux - 使用 df 获取可用磁盘空间以仅以 kb 为单位显示可用空间?