2010-09-07 49 views
0

chdir可用於常量字符路徑(它需要const char *),但不適用於用戶輸入的路徑(因爲它們的類型爲char *)。有沒有辦法解決?如何更改C中的工作目錄?

+2

使用chdir()有什麼問題?它肯定可以和用戶提供的路徑一起使用......你試過了嗎?它失敗了嗎?怎麼樣?發佈一些代碼... – Juliano 2010-09-07 20:52:26

+0

進一步羅曼的回答:一般來說,函數參數的const限定符意味着該函數不會嘗試修改您傳遞的內容,所以它*可以是一個字符串常量,而不是它*有*是一個常數。在'T const *'(對於任何類型的T)中,'const'基本上意味着「只讀」。 – 2010-09-07 21:14:51

回答

8

chdir可以使用任意字符串。 const修飾符意味着它不會修改您的字符串。

1

若要擴大Roman Cheplyaka's answer,類型限定符可以始終爲添加指針類型,但不會刪除。這意味着一個採用const char *參數的函數實際上表示它可以採用char * a const char *(這實際上意味着它不會更改字符串的內容)。

類似地,具有volatile char *參數的函數可以採取任一個char *volatile char *作爲實際參數,而這需要一個const volatile char *參數可以採取任何的char *const char *volatile char *,或const volatile char *的功能。