看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Dev-C++5.11 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) unistd.h 問題(Question): chdir在unistd.h裡面是 int chdir(const char *path) 所以我想說能不能在CMD上輸入位址給chdir的引數讀取 因為陣列本身就是指標函數,我想說那不是可以直接依址取值就好了 請教各位大神。 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) #include <stdio.h> #include <unistd.h> int main() { char buf[80]; printf("input folder address:"); scanf("%s",&buf); chdir(*buf); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.134.82 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1607590741.A.A71.html
LPH66: 請回去讀 C 語言教材裡有關字串的部份 12/10 17:41
LPH66: chdir 的引數是一個 C-style 字串 字串是字元陣列吧 12/10 17:42
descent: 你是要改變目前的工作目錄嗎? 這樣是做不到的, 12/10 18:07
descent: 就算你 chdir 成功, 程式結束後還是只會來原來目錄。 12/10 18:08
descent: 在原來目錄 是的 我想改變當下程式執行時的工作目錄 12/10 18:09 ※ 編輯: lazy0813 (140.113.134.82 臺灣), 12/10/2020 21:54:08
loveme00835: 字串跟陣列有什麼關係? 誤解很深 12/10 22:33
james732: https://ideone.com/DyAbIX 12/10 23:26
oToToT: 樓上上,C字串跟陣列為什麼沒有關係@@? 12/11 01:39
b0920075: 你傳一個字元進去要幹嘛,他要的是字串阿 12/11 10:57
loveme00835: C-style string 描述的是記憶體內容, 而 char array 12/11 11:05
loveme00835: 則是描述型別, 以及語言預設的操作. 如果這兩者可視 12/11 11:07
loveme00835: 為等價, 那以這份程式碼來看, 我是不是可以說C-style 12/11 11:12
loveme00835: string 就是 int64_t? https://godbolt.org/z/Tj3jK9 12/11 11:12
oToToT: array應該有蘊含長度是固定的意思,但是一個int64_t的長度 12/11 14:35
oToToT: 就是固定的,而若你要說int64_t array也不行,因為也會有 12/11 14:35
oToToT: byte order的問題,但是當然C字串跟字元陣列不同,但是不 12/11 14:36
oToToT: 可否認他們有很深的關係吧 12/11 14:36
loveme00835: 以記憶體的角度來說, 定義 char array 你是要到了一 12/11 14:54
loveme00835: 塊可以放連續數個 char 的空間, 但是這個空間要怎麼 12/11 14:54
loveme00835: 用, 該存字元與否? 要不要塞 '\0'? 還是單純把這塊空 12/11 14:54
loveme00835: 間當成 buffer? 當作小整數陣列使用? 都跟 C-style s 12/11 14:54
loveme00835: tring 所代表的涵義差很多. C-style string 是描述某 12/11 14:54
loveme00835: 一塊記憶體空間應該有的內容, 這和你要怎麼達到目的, 12/11 14:54
loveme00835: 和要用什麼型別都沒有關係 12/11 14:54
oToToT: 推測你想表示c-style string主要的含意是null terminated 12/11 16:23
oToToT: ,但是我的理解是c-style string除了null terminated外, 12/11 16:24
oToToT: 其呈現手法也會是一個array,內部存放許多字元(這裡的字元 12/11 16:24
oToToT: 不限於char,也可以是char16_t等等),所以字串跟陣列並不 12/11 16:25
oToToT: 是沒有關係。 12/11 16:25
loveme00835: 上面的 int64_t example 哪來的 array? 12/11 16:27
oToToT: 這裡我對於array的意涵僅僅只有一個連續包含同樣型別的記 12/11 16:36
oToToT: 憶體空間,所以若是你要使用int64_t作為陣列,我認為並沒 12/11 16:36
oToToT: 有問題,但是如果稱c style string是int64_t,就是不同的 12/11 16:36
oToToT: 思。int64_t可以是一個c style string,但他不會是所有的c 12/11 16:36
oToToT: style string 12/11 16:36
oToToT: 或者說int64_t可以存放一些c style string,但她不能存放 12/11 16:37
oToToT: 所有的c style string 12/11 16:37
oToToT: btw我前面的第二則推文似乎有點不知所云,如果有造成誤會 12/11 16:51
oToToT: 還請見諒QAQ 12/11 16:51
MOONRAKER: 「陣列本身就是指標函數」真是偉大的premise 12/14 14:31
MOONRAKER: 不如說整個程式都是指標函數好了 太偉大了 12/14 14:31
求大師解惑 ※ 編輯: lazy0813 (140.113.134.82 臺灣), 12/14/2020 23:08:12
LPH66: 就, 其實你最開始的問題只不過是沒搞懂函數要什麼而已 12/16 02:41
LPH66: chdir 吃一個 C-style 字串, 所以你就用最一般讀字串傳字串 12/16 02:41
LPH66: 的方式傳進去就是你要的了 12/16 02:41
LPH66: 不需要額外加一些 * 啦 & 的--但至於為什麼不需要 12/16 02:42
LPH66: 其中一部份其實是後面大家在討論的東西 12/16 02:42
LPH66: 包含到底什麼東西能叫做 C-style 字串, 它跟陣列的關係等 12/16 02:43