[問題]chdir函數一些小問題

看板C_and_CPP (C/C++)作者 (菜邊巴)時間4年前 (2020/12/10 16:59), 4年前編輯推噓2(2035)
留言37則, 6人參與, 4年前最新討論串1/1
開發平台(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

12/10 17:41, 4年前 , 1F
請回去讀 C 語言教材裡有關字串的部份
12/10 17:41, 1F
LPH66: chdir 的引數是一個 C-style 字串 字串是字元陣列吧 12/10 17:42

12/10 18:07, 4年前 , 2F
你是要改變目前的工作目錄嗎? 這樣是做不到的,
12/10 18:07, 2F

12/10 18:08, 4年前 , 3F
就算你 chdir 成功, 程式結束後還是只會來原來目錄。
12/10 18:08, 3F
descent: 在原來目錄 是的 我想改變當下程式執行時的工作目錄 12/10 18:09 ※ 編輯: lazy0813 (140.113.134.82 臺灣), 12/10/2020 21:54:08

12/10 22:33, 4年前 , 4F
字串跟陣列有什麼關係? 誤解很深
12/10 22:33, 4F

12/10 23:26, 4年前 , 5F

12/11 01:39, 4年前 , 6F
樓上上,C字串跟陣列為什麼沒有關係@@?
12/11 01:39, 6F

12/11 10:57, 4年前 , 7F
你傳一個字元進去要幹嘛,他要的是字串阿
12/11 10:57, 7F

12/11 11:05, 4年前 , 8F
C-style string 描述的是記憶體內容, 而 char array
12/11 11:05, 8F

12/11 11:07, 4年前 , 9F
則是描述型別, 以及語言預設的操作. 如果這兩者可視
12/11 11:07, 9F

12/11 11:12, 4年前 , 10F
為等價, 那以這份程式碼來看, 我是不是可以說C-style
12/11 11:12, 10F

12/11 11:12, 4年前 , 11F
string 就是 int64_t? https://godbolt.org/z/Tj3jK9
12/11 11:12, 11F

12/11 14:35, 4年前 , 12F
array應該有蘊含長度是固定的意思,但是一個int64_t的長度
12/11 14:35, 12F

12/11 14:35, 4年前 , 13F
就是固定的,而若你要說int64_t array也不行,因為也會有
12/11 14:35, 13F

12/11 14:36, 4年前 , 14F
byte order的問題,但是當然C字串跟字元陣列不同,但是不
12/11 14:36, 14F

12/11 14:36, 4年前 , 15F
可否認他們有很深的關係吧
12/11 14:36, 15F

12/11 14:54, 4年前 , 16F
以記憶體的角度來說, 定義 char array 你是要到了一
12/11 14:54, 16F

12/11 14:54, 4年前 , 17F
塊可以放連續數個 char 的空間, 但是這個空間要怎麼
12/11 14:54, 17F

12/11 14:54, 4年前 , 18F
用, 該存字元與否? 要不要塞 '\0'? 還是單純把這塊空
12/11 14:54, 18F

12/11 14:54, 4年前 , 19F
間當成 buffer? 當作小整數陣列使用? 都跟 C-style s
12/11 14:54, 19F

12/11 14:54, 4年前 , 20F
tring 所代表的涵義差很多. C-style string 是描述某
12/11 14:54, 20F

12/11 14:54, 4年前 , 21F
一塊記憶體空間應該有的內容, 這和你要怎麼達到目的,
12/11 14:54, 21F

12/11 14:54, 4年前 , 22F
和要用什麼型別都沒有關係
12/11 14:54, 22F

12/11 16:23, 4年前 , 23F
推測你想表示c-style string主要的含意是null terminated
12/11 16:23, 23F

12/11 16:24, 4年前 , 24F
,但是我的理解是c-style string除了null terminated外,
12/11 16:24, 24F

12/11 16:24, 4年前 , 25F
其呈現手法也會是一個array,內部存放許多字元(這裡的字元
12/11 16:24, 25F

12/11 16:25, 4年前 , 26F
不限於char,也可以是char16_t等等),所以字串跟陣列並不
12/11 16:25, 26F

12/11 16:25, 4年前 , 27F
是沒有關係。
12/11 16:25, 27F

12/11 16:27, 4年前 , 28F
上面的 int64_t example 哪來的 array?
12/11 16:27, 28F

12/11 16:36, 4年前 , 29F
這裡我對於array的意涵僅僅只有一個連續包含同樣型別的記
12/11 16:36, 29F

12/11 16:36, 4年前 , 30F
憶體空間,所以若是你要使用int64_t作為陣列,我認為並沒
12/11 16:36, 30F

12/11 16:36, 4年前 , 31F
有問題,但是如果稱c style string是int64_t,就是不同的
12/11 16:36, 31F

12/11 16:36, 4年前 , 32F
思。int64_t可以是一個c style string,但他不會是所有的c
12/11 16:36, 32F

12/11 16:36, 4年前 , 33F
style string
12/11 16:36, 33F

12/11 16:37, 4年前 , 34F
或者說int64_t可以存放一些c style string,但她不能存放
12/11 16:37, 34F

12/11 16:37, 4年前 , 35F
所有的c style string
12/11 16:37, 35F

12/11 16:51, 4年前 , 36F
btw我前面的第二則推文似乎有點不知所云,如果有造成誤會
12/11 16:51, 36F

12/11 16:51, 4年前 , 37F
還請見諒QAQ
12/11 16:51, 37F
文章代碼(AID): #1VqUDLfn (C_and_CPP)
文章代碼(AID): #1VqUDLfn (C_and_CPP)