[问题]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