C fopen正在尝试访问其他文件夹
我正在学习如何进行文件操作,在使用fopen时,我似乎遇到了一个问题。我的项目位于'C:\Users\Bob\Documents'中,但是,当我使用fopen时,它会保存或尝试访问C:\Users\Bob\Documents\Debug中的文件。调试是我的文档中的一个文件夹C fopen正在尝试访问其他文件夹,c,C,我正在学习如何进行文件操作,在使用fopen时,我似乎遇到了一个问题。我的项目位于'C:\Users\Bob\Documents'中,但是,当我使用fopen时,它会保存或尝试访问C:\Users\Bob\Documents\Debug中的文件。调试是我的文档中的一个文件夹 如何让程序仅从C:\Users\Bob\Documents访问文件,而不从Debug文件夹访问文件 是否有方法指定保存或访问文件的不同位置,而不是指定项目所在的当前目录 int main(){ FILE *fpointer
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;
}
由于您没有向
fopen
传递路径,因此它将打开当前工作目录中的文件,在您的情况下,该目录恰好是调试目录
而是传递一个完整路径,例如
fpointer = fopen("C:\\Users\\Bob\\Documents\\test.txt", "r");`
或者更改工作目录(以编程方式或在IDE设置中)。您所要求的很多内容取决于您的开发环境 您的开发环境应该为您提供一些方法,通过修改称为“调试配置”或“启动配置”或类似的内容,以某种方式配置程序的启动方式。请注意,这些选项与开发环境的常规选项不同,因为它们因项目而异 现在似乎没有配置任何内容,因此应用程序的当前目录与
.exe
文件所在的目录相同。由于您正在运行调试生成,因此Documents\debug
下会生成.exe
文件,这是它的工作目录。因此,在启动配置中,指定希望其工作目录位于C:\Users\Bob\Documents
中
或者,您当然可以尝试打开“.\test.txt”,但如果您尝试在部署条件下运行
.exe
,其中.exe
和“test.txt”
可能位于同一目录中,则此操作将失败。当前工作目录指的是项目的安全目录,对吗?如果是,则工作目录为C:\Users\Bob\Documents,而不是C:\Users\Bob\Documents\Debug。它为什么选择保存在那里?当前工作目录将取决于可执行文件的启动方式,在您的情况下,可能是通过IDE启动的。但是,你不应该对此做任何假设——工作目录可以在任何地方。对于许多IDE,程序启动时的工作目录就是可执行文件的位置。如果X是项目文件所在目录的名称,则名为Debug的X的子目录通常是放置调试生成的可执行文件的位置。由于您尚未指定所使用的IDE,因此需要阅读有关如何更改此类设置的文档(存储可执行文件的输出目录和运行程序时的工作目录通常可以单独配置)。感谢大家的帮助。我用的是代码块。我仅通过右键单击project->settings->general->build->intermediate folder->将./Debug更改为./fpointer=fopen(“C:\\Users\\Bob\\Documents\\test.txt”,“r”);我试过了,但没用。你能告诉我你通过程序改变它是什么意思吗?我正在尝试更改生成设置。另外,我正在使用CodeBlocks@BobJane:文档目录中是否存在文件test.txt
?Windows可能在文件管理器中隐藏了实际的文件扩展名,而显示为test.txt
的文件可能实际名称为test.txt.doc
。fpointer=fopen(“C:/Users/Bob/Documents/test.txt”,“r”)代码>是等效的,稍微不那么难看;-)配置构建设置后(我在问题的注释中添加了如何进行设置),我将test.txt从./Debug移动到Documents文件夹。那时候起作用了。构建设置是关键。感谢您解释调试部分。这是有道理的。我正在使用代码块,因此将尝试更改调试配置。