3

我只知道我们不能使用D:\demo.txtas\d将被视为转义字符,因此我们必须使用D:\\demo.txt。但是几分钟前我发现它的D:/demo.txt工作原理和我们不必担心转义字符一样好/。我在 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);
}
4

2 回答 2

4

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

然而,内部函数总是可以互换地接受正斜杠或反斜杠。就个人而言,我更喜欢正斜杠作为一般规则,但这主要是个人喜好 - 要么工作正常。

于 2013-05-10T03:37:27.843 回答
2

确实,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 语言没有说明使用哪个字符作为路径分隔符。语言标准甚至没有指定目录支持。它由操作系统和文件系统决定。

于 2013-05-10T06:21:45.903 回答