如何获取当前目录并将其分配给linux中的变量[关闭]
Posted
技术标签:
【中文标题】如何获取当前目录并将其分配给linux中的变量[关闭]【英文标题】:How do I get the current dir and assign it to a variable in linux [closed] 【发布时间】:2020-02-07 02:58:30 【问题描述】:我是编程新手,目前我遵循 pwd 教程并得出以下代码。 我需要分配一个变量来保存当前目录,并将其与其他文件连接,如下所示。
#include <unistd.h>
#define GetCurrentDir getcwd
main (
uint port,... )
char buff[FILENAME_MAX];
GgetCurrentDir(buff, FILE_MAX);
FILE * fpointer ;
fpointer =fopen(buff+"/config_db","w"); //here
fclose(fpointer);
【问题讨论】:
GgetCurrentDir
是不是打错字了?
看起来像you need a good C++ book,而不是“在线指导”。
您的代码已经完全符合您的描述。不清楚你在问什么。
【参考方案1】:
维基部分
在 C++17 中,您正在寻找 filesystem
:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
std::cout << "Current path is " << fs::current_path() << '\n';
见cppreference filesystem
在 linux API 中,您正在寻找 getcwd
:
#include <string.h>
#include <unistd.h>
#include <iostream>
int main()
char buf[1 << 10];
if (nullptr == getcwd(buf, sizeof(buf)))
printf("errno = %s\n", strerror(errno));
else
std::cout << buf << std::endl;
见linux man page getcwd
你的部分
您做错的是您不能将char *
或char []
与+
连接。
您应该从<cstring>
尝试strcat
或在投射后应用+
到std::string
。
#include <unistd.h>
#include <cstring>
#include <iostream>
#define GetCurrentDir getcwd
int main()
char config_db_path[1 << 10];
GetCurrentDir(config_db_path, sizeof(config_db_path)); // a typo here
strcat(config_db_path, "/config_db");
// concatenate char * with strcat rather than +
FILE* fpointer = fopen(config_db_path, "w");
fclose(fpointer);
【讨论】:
Linux 呢?文件系统适用于 windows 对吗? @Aloisstd::filesystem
适用于支持 c++17
的编译器,无论是什么平台。
谢谢@tigertang3。之前的错误解决了,但我现在有这些错误: PortSelection_main.c:22:5: warning: first argument of 'int main(uint, ...)' should be 'int' [-Wmain] int main (^~ ~~ PortSelection_main.c:22:5: warning: 'int main(uint, ...)' 只需要零个或两个参数 [-Wmain] PortSelection_main.c:22:5: warning: 'int main(uint, . ..)' 声明为可变参数函数 [-Wmain]
你需要看一下c main函数的模板。 uint 不应该是第一个参数以上是关于如何获取当前目录并将其分配给linux中的变量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在门控签入期间获取搁置集名称并将其分配给 tfs 构建任务中的变量
如何以字节为单位获取 pdf 的大小并将其分配给 Data 变量?