我找到了获取当前工作目录的 C 代码片段 from here .本质上,代码是:
char directory[_MAX_PATH];
getcwd(directory, sizeof(directory))
我想将它抽象为另一个函数,放在不同的文件中(这样它就可以在必要时在不同的平台上换出)。
目前,我在外部文件中有
void getCurrentDirectory(char *directory) {
getcwd(directory, sizeof(directory));
}
在主文件中
char directory[100];
getCurrentDirectory(directory);
printf("%s", *directory);
但是,当打印到屏幕时,我得到了废话(可能试图将内存位置打印为字符串?)
我敢肯定,对于非初学者来说,这是显而易见的事情。怎么回事?
编辑:我在 Windows 7 上,顺便说一句
谢谢。
最佳答案
这里有很多地方你做错了:
void getCurrentDirectory(char *directory)
{
getcwd(directory, sizeof(directory));
}
错误 1:
`sizeof(directory)`
为您提供指针的大小,准确地说,是 char *。您的意图是传递数组的大小,而不是指针大小。
错误 2:
`printf("%s", *directory);`
将数组的第一个元素而不是数组的地址传递给 printf。您的意图是打印整个数组,而不仅仅是第一个元素。
更正的解决方案
你应该做的
void getCurrentDirectory(char *directory, size_t arrSize)
{ ^^^^^^^^^^^^^^
getcwd(directory, arrSize);
}
数组的大小是显式传递的,因此函数可以直接使用它。
在主要的同时打印数组的内容:
printf("%s", directory);
关于c++ - 在函数中包装 C block 。初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099699/