Windows和Linux/Unix系统中文件路径使用总结

本文总结了Windows和Linux/Unix系统中文件路径的使用。在Windows中,文件路径通常使用反斜杠,但在编程中需要转义;而在Linux/Unix环境下,路径使用正斜杠。编程时需要注意反斜线作为转义符的问题,避免在Windows路径中使用单个反斜线。在SQL中,反斜线也会被转义,可能导致语法错误。建议在Windows路径中使用正斜杠以避免混淆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Microsoft  Windows

    Windows系统中以反斜线’\‘表示文件路径,而在编程语言中反斜线'\'通常为转义字符。所以在Windows环境下的程序中,如涉及到文件路径一般需要写成如下形式:

    "D:\\Microsoft Visual Studio 2010 Workspace\\MFCardReader\\"

    其中第一个反斜线为转义符,第二个反斜线表示文件路径。如果只有一个反斜线,编译器将会把反斜线当做转义字符来处理,在这里最后有反斜线应该是编译不通过的,编译通过了和我们想要的结果也谬以千里了。

    值得注意的是,在Microsoft dos(cmd)环境下的dos命令在处理文件路径时也以反斜线'\'表示文件路径,如果非要写成斜线'/'也不是不可以,不过得这样写:

    del   "D:/Virtual Machines/Fedora 20/filename"          /*删除filename文件*/

    用反斜线的话是不需要带双引号的,带上也没错。

    del   D:\Virtual Machines\Fedora 20\filename           or            del   "D:\Virtual Machines\Fedora 20\filename"  


二、Linux/Unix环境下

    文件路径已斜线’/‘表示,且文件系统已根目录’/‘开始,似乎要好理解得多,至少在编程语言中不会和转义符冲突。

    Linux/Unix环境下的shell命令自然也以斜线’/‘表示路径。


三、编程应用

    ①编译器在处理字符串时遇到反斜线’\‘会当成转义符来识别;

     所以在Microsoft Windows环境下处理文件路径时需要特别小心,其他地方是很少用到'\'的,如果是斜线,则不需要转义。

    ②编译器在处理非字符串时遇到反斜线’\‘会当成续行符来处理;

    ③在SQL中的反斜线’\‘同样会被当作转义符;

#define FILE_PATH "D:\\file path\\"

char sql[1024] = {0};
sprintf_s(sql, sizeof(sql), "insert into table values ('%s')", FILE_PATH);
    这段代码中我们得到的SQL语句是:   insert  into  table  values ('D:\file path\')          ----编译器将反斜线'\'当做转义符

    且不论table的结构如何,首先这条SQL是错误的,因为单引号’’‘也被反斜线转义了,导致SQL出错。

    这里的过程是这样的:

    第一步,C的编译器编译C程序,将文件路径组成SQL(两条反斜线变成了一条);

    第二步,SQL(Structure Query Language)也是一种编程语言,它的编译器将SQL语句看成是这样的:insert  into  table  values ('D:file path\') 

    也就是说,最后那个单引号被看成了字符串的一部分,而不是字符串的结束标志,SQL的编译器认为字符串还没有结束,SQL肯定是无法执行的。

   

    当然,这样的坑只有在Microsoft Windows下才能碰到,在大部分Windows环境编译器都能够识别以‘/’作为文件路径的情况下,最好还是写成这样D:/file path/

编译器就不会产生误会了。在用dos命令时写成这样既可:del  "D:/file path/filename"


如有转载请注明出处

作者:super bert@csdn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值