【发布时间】:2019-07-08 16:21:29
【问题描述】:
我的项目的子目录中有以下 C++ 代码:/storage/app/users/user1/12/12.cpp
#include <bits/stdc++.h>
using namespace std;
main(){
int x,y,z,t;
freopen("input.txt","r",stdin);
cin >> x >> y >> z >> t;
cout << x <<" "<< y <<" "<<z <<" "<<t;
}
然后将此代码编译为 .exe 文件: /storage/app/users/user1/12/12.cpp.exe。
input.txt 文件与 2 个给定文件位于同一目录中并包含
1 2 3 4
当我尝试运行 'cd storage/app/users/user1/12 ; ./12.cpp.exe',它产生了预期的输出:1 2 3 4
但是当我尝试直接运行它时:'./storage/app/users/user1/12/12.cpp.exe',它产生了这样一个奇怪的输出:0 4254553 0 1
为什么会这样?
【问题讨论】:
-
HInt:每种情况下的当前路径是什么?由于您使用相对路径,在每种情况下都加载了哪个
input.txt文件? -
在案例 1 中,它尝试打开
storage/app/users/user1/12/input.txt,在案例 2 中,它尝试打开./input.txt。这几乎与 C++ 无关,这是关于系统路径及其工作方式。 -
您在 Linux 和 Mac OS 中也会遇到同样的问题。