我需要知道如何使用Unix参数<和>在C ++中工作,有人告诉我如果我运行该程序,则./program < input file > output file
该程序将从文件中读取带有的声明,<
并在声明后将其写入该文件中。>
实际的代码看起来像这样
int main(int argc, char** argv)
{
FILE* filein = fopen(argv[1], "r");
FILE* fileout = fopen(argv[2], "w");
...
所以我想将在程序中声明的文件放到这里开始处理,因为我将在程序中filein
及fileout
以后使用。
我只允许使用,stdio.h
所以请保持基本状态。
提前致谢
此shell cmd语法
./program < input_file > output_file
不需要对传递给main的参数做任何事情
int main(int argc, char** argv) {
你可以参考std::cin
和std::cout
对于所提到的输入和输出文件。
这是一个Shell功能,称为标准输入/输出流重定向。如果您想通过传递额外的参数给程序,argv
通常会使用以下语法
./program -x --opt1 < input_file > output_file
如你所说
“只允许我使用,
stdio.h
因此请保持基本状态。”
在这种情况下,您可以使用预定义的stdin
/stdout
宏。
FILE* filein = stdin;
FILE* fileout = stdout;
这是您应默认使用的。如果要具有其他功能,即用户指定特定的输入/输出文件名作为程序参数,则还应该检查传递给您的main的命令行参数:
int main(int argc, char* argv[]) {
FILE* filein = stdin;
FILE* fileout = stdout;
if(argc > 1) {
filein = fopen(argv[1], "r");
}
if(argc > 2) {
fileout = fopen(argv[2], "w");
}
}
默认情况下,您的程序从标准输入读取并写入标准输出(如果按上述方法完成)。因此,仅调用不带任何参数的程序,就会提示用户输入内容。
这是用于实现控制台程序的首选且最灵活的样式,该样式应处理流输入并转换(处理)为任何输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句