提供依赖于输入的程序的文件路径
Providing a file path to an input-dependent program
首先,对不起,如果标题没有意义。我问题的性质使我很难措辞。
我正在为我的数据结构课做作业,由于只在旧学校学习过 Java,我对 c++ 完全完全陌生。该项目是一个天气记录器,它从文本文件climatedata.txt
读取数据。我的老师在文件中为我们提供了一个 main 函数(我们不允许以任何方式修改(,weatherlog.cpp
如下。
#include <iostream>
#include <fstream>
#include "datalogger.h"
using namespace std;
int main(int argc, char** argv) {
datalogger dl;
if (argc != 2) {
cout << "Usage: " << argv[0] << " <datafile>" << endl;
exit(0);
}
// Read the data
char* datafile = argv[1];
ifstream infile(datafile);
int timestamp;
double temperature;
double windspeed;
while (!infile.eof()) {
infile >> timestamp;
infile >> temperature;
infile >> windspeed;
if (!infile.eof()) {
dl.addData(timestamp, temperature, windspeed);
}
}
// Output the report
dl.printReport();
return(0);
}
最初我很困惑为什么程序永远不会完全执行,直到我弄清楚argc
在主函数范围内是什么。似乎他希望我在编译时提供文本文件名,以便argc
将是 2 而不是 1(我在调试时看到的值(,以便它可以实际执行程序的其余部分而不是立即退出。
我的问题是我不确定如何为程序提供文本文件位置。我已经在互联网上查看了所有内容,但由于我什至不确定在哪个阶段提供文件路径,因此我没有任何成功。使用 g++ 编译时是否应该传递该信息?成功编译后,当我尝试运行可执行文件时?执行此操作的终端命令是什么样的?
所以我知道你需要在 argv 中提供一个文件名(如果我不正确,请在下面评论(。argv
是命令行传递的参数数组,argc
是传递(自动设置(的参数数量。为此,只需在终端中调用程序,如下所示:./<progam> <file_name>
例:
编译就像你对你好世界程序一样。
调用程序weatherlog climatedata.txt
。
如果您的文件名称中包含空格,请将其删除或将其名称括在引号中。
argc
存储传入参数的数量,而argv
指向参数。
if (argc != 2)
意味着检查通过控制台模式传入的输入参数的数量。第一个参数始终是程序名称。从第二个参数中,您可以传递所需的任何内容。char* datafile = argv[1];
表示将第二个参数作为数据文件名。
简而言之,打开控制台模式(Windows上的CMD,Linux上的终端(并键入以下内容:yourprogram C:pathtoclimatedata.txt
.
- 如何在 c++ 中正确指定 #include 路径以使程序可移植
- 如何在没有"路径"模块的情况下加载 cheerp-wasm 程序?
- 如何使特定程序仅从安装的路径运行以避免DLL劫持
- 如何从 CLion 的运行窗口中删除程序项目路径
- 更改应用程序数据的路径
- CMake导出的库-在客户端应用程序中找不到include/Lib路径
- 在 Linux 上,在 C++ 程序中,如何找到已加载共享库的路径?
- 按名称问题获取卸载应用程序路径
- 提供依赖于输入的程序的文件路径
- 程序文件中的安装路径:一些问题
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 通过程序代码行设置C++包含路径
- QT MAC应用程序存储数据路径
- Visual Studio:C++\CLI 包装程序集路径依赖性问题
- 在UWP中获取fopen()的应用程序路径
- 在应用程序末尾获取不带应用程序名称的应用程序路径
- VS 代码C++:无法启动调试 - 程序路径丢失或无效
- 获取dll中的应用程序路径
- 如何在 Linux 上获取运行应用程序路径
- 如何知道Linux下C/ c++中调用的程序路径