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

作者: lazy0813 (菜邊巴)   2020-12-10 16:58:59
開發平台(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;
}
作者: LPH66 (-6.2598534e+18f)   2020-12-10 17:41:00
請回去讀 C 語言教材裡有關字串的部份
作者: descent (「雄辯是銀,沉默是金」)   2020-12-10 18:07:00
你是要改變目前的工作目錄嗎? 這樣是做不到的,就算你 chdir 成功, 程式結束後還是只會來原來目錄。
作者: loveme00835 (髮箍)   2020-12-10 22:33:00
字串跟陣列有什麼關係? 誤解很深
作者: james732 (好人超)   2020-12-10 23:26:00
作者: oToToT (屁孩)   2020-12-11 01:39:00
樓上上,C字串跟陣列為什麼沒有關係@@?
作者: b0920075 (Void)   2020-12-11 10:57:00
你傳一個字元進去要幹嘛,他要的是字串阿
作者: loveme00835 (髮箍)   2020-12-11 11:05:00
C-style string 描述的是記憶體內容, 而 char array則是描述型別, 以及語言預設的操作. 如果這兩者可視為等價, 那以這份程式碼來看, 我是不是可以說C-stylestring 就是 int64_t? https://godbolt.org/z/Tj3jK9
作者: oToToT (屁孩)   2020-12-11 14:35:00
array應該有蘊含長度是固定的意思,但是一個int64_t的長度就是固定的,而若你要說int64_t array也不行,因為也會有byte order的問題,但是當然C字串跟字元陣列不同,但是不可否認他們有很深的關係吧
作者: loveme00835 (髮箍)   2020-12-11 14:54:00
以記憶體的角度來說, 定義 char array 你是要到了一塊可以放連續數個 char 的空間, 但是這個空間要怎麼用, 該存字元與否? 要不要塞 '\0'? 還是單純把這塊空間當成 buffer? 當作小整數陣列使用? 都跟 C-style string 所代表的涵義差很多. C-style string 是描述某一塊記憶體空間應該有的內容, 這和你要怎麼達到目的,和要用什麼型別都沒有關係
作者: oToToT (屁孩)   2020-12-11 16:23:00
推測你想表示c-style string主要的含意是null terminated,但是我的理解是c-style string除了null terminated外,其呈現手法也會是一個array,內部存放許多字元(這裡的字元不限於char,也可以是char16_t等等),所以字串跟陣列並不是沒有關係。
作者: loveme00835 (髮箍)   2020-12-11 16:27:00
上面的 int64_t example 哪來的 array?
作者: oToToT (屁孩)   2020-12-11 16:36:00
這裡我對於array的意涵僅僅只有一個連續包含同樣型別的記憶體空間,所以若是你要使用int64_t作為陣列,我認為並沒有問題,但是如果稱c style string是int64_t,就是不同的思。int64_t可以是一個c style string,但他不會是所有的cstyle string或者說int64_t可以存放一些c style string,但她不能存放所有的c style stringbtw我前面的第二則推文似乎有點不知所云,如果有造成誤會還請見諒QAQ
作者: MOONRAKER (㊣牛鶴鰻毛人)   2020-12-14 14:31:00
「陣列本身就是指標函數」真是偉大的premise不如說整個程式都是指標函數好了 太偉大了
作者: LPH66 (-6.2598534e+18f)   2020-12-16 02:41:00
就, 其實你最開始的問題只不過是沒搞懂函數要什麼而已chdir 吃一個 C-style 字串, 所以你就用最一般讀字串傳字串的方式傳進去就是你要的了不需要額外加一些 * 啦 & 的--但至於為什麼不需要其中一部份其實是後面大家在討論的東西包含到底什麼東西能叫做 C-style 字串, 它跟陣列的關係等

Links booklink

Contact Us: admin [ a t ] ucptt.com