问题
在使用 Clion
编译运行 C++
时,程序从文件中读取输入数据,使用 freopen
重定向输入,一直没有读取到数据,execute.txt
文件放在cpp文件同级目录下:
freopen("./execute.txt", "r", stdin);
原因:
在 Clion
中,cpp
源文件经编译后生成可执行文件,放在 cmake-build-debug
目录下,也就是最终的执行目录,所以文件相对路径应该是 ../
解决办法:
1.使用绝对路径
使用文件绝对路径,读取文件一般不会出问题,例如
freopen("/Users/usr/workspace/ClionProjects/untitled/execute.txt", "r", stdin);
2.使用相对路径
使用相对路径的话,就是要确定待读取文件目录和编译之后生成的可执行文件目录。
如果把待读取文件放到 cmake-build-debug
目录,直接执行
freopen("./execute.txt", "r", stdin);
如果把待读取文件放在 cpp
文件同级目录下,则程序执行时需要在父级目录找待读取文件
freopen("../execute.txt", "r", stdin);