如何获取当前目录并将其分配给 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';
}
在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;
}
}
你的部分
你做错的是你不能将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);
}
我是编程新手,目前我按照 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';
}
在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;
}
}
你的部分
你做错的是你不能将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);
}