絕對路徑以及相對路徑中的斜槓和反斜槓
一、C++檔案中的路徑
檔案路徑中的正斜槓和反斜槓
正斜槓,又稱左斜槓,符號是"/";
反斜槓,也稱右斜槓,符號是"\"。
檔案路徑的表示可以分為絕對路徑和相對路徑:
1、 絕對路徑
絕對路徑表示相對容易,
例如要開啟“C: \Documents andSettings\All Users\My Documents\Downloads\pillow.jpg”,則:
Fp =fopen("C: \\Documents andSettings\\All Users\\My Documents\\Downloads
\\pillow.jpg ", "rb");
給出了從碟符開始的全部路徑,這裡需要注意的是“\”要用雙斜線"\\",因為路徑包含在雙引號中,相當於一個字串,字串中的反斜槓需要和一個反斜槓連用,表示一個轉義字元。
2、相對路徑
vc工程預設訪問的目錄是工程目錄,相對路徑有以下多種形式,
當前工作路徑(DSW所在目錄) |
檔案的絕對路徑 |
相對路徑的寫法 |
D: \VS2008\test\test.dsw |
D: \VS2008\test\ pillow.jpg |
Fp =fopen ("pillow.jpg ", "rb"); |
D: \VS2008\test\test.dsw |
D: \VS2008\test\src\ pillow.jpg |
Fp =fopen (".\\src\\pillow.jpg", "rb"); 或者Fp =fopen ("src\\pillow.jpg", "rb"); |
D: \VS2008\test\test.dsw |
D: \VS2008\src\ pillow.jpg |
Fp =fopen ("..\\src\\pillow.jpg", "rb"); |
例一:
Fp =fopen ("pillow.jpg ","rb"); bmp檔案就在vc工程目錄下,和dsw檔案同屬一個目錄。
例二:
Fp =fopen ("..\\src\\pillow.jpg", "rb");
"../" 表示當前目錄的上級目錄,即當前的父目錄。表示JPG檔案在工程目錄的同級目錄src中,因此路徑是先退出工程目錄再進入src目錄訪問到JPG檔案。“..”表示退到當前目錄的上一級目錄(父目錄)
例三:
Fp =fopen(".\\Downloads\\pillow.jpg", "rb");
".\" 加不加都一樣,就是指當前目錄。 表示JPG檔案就在工程目錄的子目錄src中,“.”表示當前預設目錄,即vc工程目錄,然後在進入其子目錄src訪問到檔案
二、HTML檔案中的路徑表示
HTML中的相對路徑:
“../”表示上一級目錄開始
“./”表示當前同級目錄開始
“/”表示根目錄開始。
當前HTML絕對路徑 |
需要連結到的HTML絕對路徑 |
連結路徑 |
D:\workspace\TEST_HTML\main.htm |
D:\workspace\test \link.html |
"../test/link.htm" |
D:\workspace\TEST_HTML\main.htm |
D:\workspace\TEST_HTML\test\link.html |
"./test/link.htm" |
D:\workspace\TEST_HTML\main.htm |
D: \test\link.html |
"/test/link.htm" |
三、Unix/Linux環境下的路徑表示
在Unix/Linux中,路徑的分隔採用正斜槓“/”,比如"/home/hutaow";而在Windows中,路徑分隔採用反斜槓“\”,比如“C:\Windows\System”。
四、路徑總結
有時我們會看到這樣的路徑寫法,“C:\\Windows\\System”,也就是用兩個反斜槓來分隔路徑,這種寫法在網路應用或程式設計中經常看到。事實上,上面這個路徑可以用“C:/Windows/System”來代替,不會出錯。但是如果寫成了“C:\Windows\System”,那就可能會出現各種奇怪的錯誤了。這是因為,在C裡面,輸出字串時,反斜槓(“\”)這個符號會把跟在它後面的字元結合起來轉義成其它字元。
例如:如果想輸出一個換行,那就要加上“\n”這個標誌;輸出一個TAB,就加上“\t”;想輸出雙引號('"'),就需要輸入“\"”。那麼如果想輸入一個反斜槓呢?很簡單,只要敲“\\”就可以了。
看到這裡就會明白,如果“C:\Windows\System”這個路徑字串交給C編譯器編譯,實際寫入記憶體的字串並沒有包含反斜槓“\”,而是將“\W”,“ \S”一起被轉義成了其它的字元,再次呼叫的話勢必會出問題。