_splitpath _wsplitpath
分割成元件的路徑名稱。 這些函式更安全版本可用,請參閱_splitpath_s _wsplitpath_s。
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
參數
path
完整路徑。drive
磁碟機代號,後面接冒號 (:)。 您可以傳遞NULL這個參數,如果您不需要的磁碟機代號。dir
目錄路徑,包括結尾的斜線。 正斜線 ( / ),反斜線 ( \ ),或兩者皆可使用。 您可以傳遞NULL這個參數,如果您不需要的目錄路徑。fname
基底檔名 (沒有副檔名)。 您可以傳遞NULL這個參數,如果您不需要的檔案名稱。ext
檔名的副檔名,包括前置時間 (.)。 您可以傳遞NULL這個參數,如果您不需要檔名的副檔名。
備註
_splitpath函式會分成四個元件中的路徑。 _splitpath會自動處理多位元組字元字串引數視需要辨識多位元組字元順序,根據目前使用中的多位元組字碼頁。 _wsplitpath寬字元版本的**_splitpath**。 引數去**_wsplitpath**是寬字元字串。 這些函式具有相同其他方式作業。
安全性附註這些函式會造成潛在的威脅是緩衝區滿溢的問題。 緩衝區滿溢問題都是常見的方法,系統的攻擊,因而導致未經授權提升權限。 如需詳細資訊,請參閱避免緩衝區滿溢,。 這些函式更安全版本都可使用; 請參閱 _splitpath_s、 _wsplitpath_s。
泛用文字常式對應
TCHAR。H 常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
每個元件的完整路徑會儲存在不同的緩衝。 資訊清單常數_MAX_DRIVE, _MAX_DIR, _MAX_FNAME,以及_MAX_EXT (STDLIB 中所定義。H) 中指定的每個檔案元件的大小上限。 檔案的元件,大於相對應的資訊清單常數會造成堆積損毀。
每個緩衝區必須相等於其對應的資訊清單常數,以避免潛在的緩衝區滿溢。
下表列出了資訊清單常數的值。
名稱 |
值 |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
如果完整的路徑不包含元件 (例如,檔名), _splitpath評定空字串,以對應的緩衝區。
您可以傳遞NULL到**_splitpath**以外的任何參數的path ,您不需要。
如果path是NULL,不正確的參數處理常式會叫用,如所述參數驗證。 如果要繼續,請允許執行errno設定為 [ EINVAL ,則函數會傳回EINVAL。
需求
常式 |
所需的標頭 |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> 或者 <wchar.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
請參閱範例的 _makepath。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。