C 能够以其完整路径打开代码::块中的文件,但不能以相对路径作为命令行参数打开文件
C++ Able to open a file in Code::Blocks with its full path, but not with relative path as a command line argument
我正在使用Code :: blocks中的C 家庭作业项目,其中第一个命令行参数中指定要打开的文件名。我要打开的文件标题为inputfile1.txt。当我在下面运行代码时:
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <unistd.h>
using std::cout;
using std::ifstream;
using std::ofstream;
using std::cerr;
int main(int argc, char *argv[])
{
ifstream inputFile;
puts(getcwd(0,1234));
inputFile.open(argv[1]);
if (inputFile.is_open())
{
cerr << "Couldn't open file " << argv[1];
return(EXIT_FAILURE);
}
cout << "nThe file to search is: " << argv[1];
return(EXIT_SUCCESS);
}
显示错误消息"无法打开文件inputfile1.txt"。但是,当我输入Inputfile1.txt的完整路径时,该文件成功打开,如底部的消息的输出所示。已经采取了以下故障排除步骤:
- 在同一IDE上运行的C程序成功打开了文件。
- 验证文件名已正确拼写,是第一个命令行参数;还使用GEDIT打开文件。
- 验证了文件路径与当前工作目录输出匹配的puts(getCWD(0,1234)语句。 )
- 验证了代码:: blocks项目执行工作目录(项目> properties>构建目标 - 执行工作dir :)匹配步骤3的输出,并且该InputFile1.txt在工作目录中。
- 将工作目录更改为一个级别的目录,并将Inputfile1.txt复制到目录。再一次,通过完整的路径成功,但不像argv [1]。
我的分析:
- 我不认为它是文件权限,否则它不会在GEDIT或完整的路径中打开。
- 我认为这不是执行工作目录,否则它不会打开Code of Code :: Blocks的C程序。
- 这与我的C 代码或代码:: Blocks配置有关。
任何见解/帮助都将不胜感激。
事实证明,上面列出的代码正常工作。以下代码中的if语句:
inputFile.open(argv[1]);
if (inputFile.is_open())
{
cerr << "Couldn't open file " << argv[1];
return(EXIT_FAILURE);
}
正在评估表达式inputFile.is_open()
的结果,该结果在成功打开文件时返回了TRUE。要检查文件是否未成功打开,应使用表达式!inputFile.is_open()
。感谢我的教授帮助我解决这个问题 - 错误是我自己的。
相关文章:
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 如何为文件路径使用变量?
- 包括 VS Code 上的完整文件路径
- 如何使用提升获取当前文件路径?
- 如何在 c++ 中获取当前文件路径?
- 保存json文件后如何返回文件路径
- 从 C++ 中的文件路径中提取文件名
- 是否可以将文件路径传递给Qt中的setStyleSheet()
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 提供依赖于输入的程序的文件路径
- 从 QFileSystemModel 中的文件路径和文件名获取 QModelIndex
- 如何更改变量文件名的文件路径?
- cmake:包括vs vs add_subDirectory:相对标头文件路径
- 在OSX中使用CGDisplayStream存储屏幕记录的特定文件路径
- 如何在另一个系统上启用文件路径