如何获取当前目录并将其分配给 linux 中的变量

How do I get the current dir and assign it to a variable in linux

我是编程新手,目前我按照 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);
}

维基部分

在 C++17 中,您正在寻找 filesystem:

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n';
}

cppreference filesystem

在linuxAPI中,您正在寻找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);
}