【问题标题】:Where to put files so C program can access them?将文件放在哪里以便 C 程序可以访问它们?
【发布时间】:2014-02-13 11:41:04
【问题描述】:

我正在尝试在 C 程序中打开文件,但我不确定将要打开的文件放在哪里(如在哪个目录中)。这是代码,但我真的只需要知道将要使用fopen() 打开的文件放在哪里。

FILE *fileptr;

fileptr = fopen("QuizQuestions.txt", "r");
if (fileptr == NULL) {
    printf("Unable to open file.");
}

感谢任何帮助!

【问题讨论】:

    标签: c file file-io directory fopen


    【解决方案1】:

    如果您在代码中不使用绝对路径名,则路径会在用户运行程序时相对于用户的工作目录进行解释。所以对于你的程序,用户应该把文件放在他们的当前目录中。

    程序本身的位置无关紧要。如果你想获取程序的位置,你会看到这个问题:

    How do I find the location of the executable in C?

    然后您可以将目录与文件名连接起来。

    【讨论】:

    • 非常感谢。有什么办法可以让它从与程序本身相同的目录中读取?
    【解决方案2】:

    源代码文件所在的位置需要保留文件,否则需要给出绝对路径。

    【讨论】:

    • 和源代码在同一个目录吧?因为我有文件,但fopen() 不断返回NULL
    • @Rohan 我也试过你的代码,它不返回 NULL。请让我重复一遍,在您的情况下,您应该将文件保存在您拥有 .c/.cpp 文件的位置。
    • 这是错误的。源代码无关紧要,路径名是相对于用户的工作目录进行解释的。
    • @Barmar 我正在使用 Visual Studio,如果我将 txt 文件保存在源代码文件夹中,代码工作正常。
    • 这听起来对 VS 来说非常具体,它不是一个通用的解决方案。