在Windows上的C中使用哪种路径格式,“D:\\ source.txt”或“D:/source.txt”?

时间:2013-05-10 03:31:13

标签: c path

我只知道我们无法使用D:\demo.txt因为\d将被视为转义字符,因此我们必须使用D:\\demo.txt。但几分钟前我发现D:/demo.txt 1}}工作得很好,因为我们不必担心使用/转义字符。我在Windows上使用CodeBlocks,我想知道路径中哪一种格式对我平台上的C有效。这是我的代码和注释掉的行同样合适。

#include<stdio.h>

int main()
{
char ch;
FILE *fp,*tp;
fp=fopen("D:\\source.txt","r");
//fp=fopen("D:/source.txt","r");
tp=fopen("D:\\encrypt.txt","w");
//tp=fopen("D:/encrypt.txt","w");
if(fp==NULL||tp==NULL)
printf("ERROR");
while((ch=getc(fp))!=EOF)
putc(~ch,tp);
fclose(fp);
fclose(tp);
}

2 个答案:

答案 0 :(得分:4)

Windows(如之前的MS-DOS)需要反斜杠作为Windows内置/提供的命令行工具的路径分隔符。

然而,内部函数始终可以互换地接受前向或后向斜杠。就个人而言,我更倾向于使用正斜杠作为一般规则,但它主要是个人偏好 - 要么工作正常。

答案 1 :(得分:1)

Windows和MS-DOS接受正斜杠/或反斜杠\作为目录路径分隔符是正确的。在C代码中使用正斜杠有很好的论据,因为它不必在字符串和字符文字中进行转义。

但我自己的偏好是使用反斜杠(并记得正确地逃避它),因为大多数Windows用户可能不知道您可以使用/作为目录分隔符。 fopen电话无关紧要;这些是等效的(在Windows上):

fopen("D:\\foo\\bar\\blah.txt", "r");
fopen("D:/foo/bar/blah.txt", "r");

但是如果该文件名曾经向用户显示过,恕我直言,如果邮件引用D:\foo\bar\blah.txt,它会好很多。

始终如一地使用其中一种。

顺便提一下,C语言没有说明哪个字符用作路径分隔符;语言标准甚至没有指定目录支持。它由操作系统和文件系统决定。