我有一个要读取的CSV文件,它位于cpp的同一目录中。在构建代码时,exe生成在不同的文件夹中(out文件夹本身生成)。我知道在运行程序时当前的工作目录是exe的目录,这就是为什么fopen返回null。我怎样才能获得cpp的路径并将其传递给fopen以使其工作。注意:“我不能使用iostream”
答案 0 :(得分:0)
#define PATH "/home/logan/path_to_cpp_file/"
int main (int argc, char **argv)
{
char file2open[256];
sprintf (file2open, "%sfoo.csv", PATH);
fd = open (file2open, O_RDONLY)
......
close (fd);
}
这样它将在cpp文件夹中搜索该文件。
或者,如果您不想像上面的硬编码那样给出cpp文件夹的路径,那么您可以使用像__FILE__
这样的宏来提供cpp文件的路径。
char* fileName = basename(__FILE__);
或者另一种方法是将文件路径作为参数传递给命令。
答案 1 :(得分:0)
这里我发布了我的问题的答案,以便有人从中获得帮助
char path_buffer[] = __FILE__;
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(path_buffer, drive, dir, fname, ext);
strcpy(fname, "AvailableUsage");
strcpy(ext, ".csv");
_makepath(path_buffer, drive, dir, fname, ext);
FILE *fp = fopen(path_buffer, "r");