fopen试图访问不同的文件夹

时间:2017-07-13 10:33:13

标签: c

我正在学习如何进行文件操作,而在使用fopen时我似乎遇到了问题。我的项目位于' C:\ Users \ Bob \ Documents' ,但是,当我使用fopen时,它会保存或尝试从 C:\ Users \访问文件鲍勃\文件\调试即可。 Debug是我的Documents中的一个文件夹。

  1. 如何让我的程序仅从 C:\ Users \ Bob \ Documents 访问文件,而不是 Debug 文件夹。
  2. 有没有办法指定保存或访问文件的不同位置,而不是我项目所在的当前目录。

    int main(){
    
    FILE *fpointer;
    char ch;
    fpointer = fopen("test.txt", "r");
    
    while(1){
        ch = fgetc(fpointer);
        if( ch == EOF){
            break;
        }
        printf("%c", ch);
    }
    
    return 0;
    }
    

2 个答案:

答案 0 :(得分:3)

由于您没有将路径传递给fopen,它将打开当前工作目录中的文件,这恰好是您案例中的Debug目录。

通过完整路径,例如

fpointer = fopen("C:\\Users\\Bob\\Documents\\test.txt", "r");`

或更改工作目录(以编程方式或在IDE设置中)。

答案 1 :(得分:2)

您提出的很多问题取决于您的开发环境。

您的开发环境应该为您提供一些方法,以某种方式配置程序的启动方式,通过修改一些名为“调试配置”或“启动配置”的东西或类似的东西。请注意,这些选项与开发环境的一般选项不同,因为它们因项目而异。

现在似乎没有配置任何内容,因此应用程序的当前目录与.exe文件所在目录的目录相同。由于您正在运行调试版本,.exe文件是在Documents\Debug下生成的,这是它的工作目录。因此,在启动配置中,指定您希望其工作目录位于C:\Users\Bob\Documents

或者,您当然可以尝试打开“.. \ test.txt”,但如果您尝试在部署条件下运行.exe,那么这将失败,.exe和{ {1}}可能会在同一目录中。