如果工作目录和源目录不同并且文件驻留共享源目录,如何使fopen工作?

时间:2016-07-20 04:16:53

标签: c

我有一个要读取的CSV文件,它位于cpp的同一目录中。在构建代码时,exe生成在不同的文件夹中(out文件夹本身生成)。我知道在运行程序时当前的工作目录是exe的目录,这就是为什么fopen返回null。我怎样才能获得cpp的路径并将其传递给fopen以使其工作。注意:“我不能使用iostream”

2 个答案:

答案 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");