在“The C Programming Language”(K& R)的第1.6节中,有一个示例程序,作者声明:
The output of this program ON ITSELF is
digits = 9 3 0 0 0 0 0 0 0 1, white space = 123, other = 345
然后有许多类似的程序等包括练习。我理解代码逻辑的所有内容并且可以进行练习,但是我如何在作者或网上许多其他文件上实际测试我的程序?
编辑:问题应该是:如何将文件输入重定向到程序?
答案 0 :(得分:4)
第1.6章中的程序从stdin读取输入。要使它从文件中读取,您可以(在大多数操作系统上)通过运行您的程序将stdin重定向为文件:
myprogram < somefile
或者你可以像这样管道文件的内容:
cat somefile | myprogram
在Windows上,您使用的是type
程序,而不是cat
,
type somefile | myprogram
答案 1 :(得分:2)
这是使用重定向。它不是来自键盘的程序输入,而是来自文件。
在DOS提示符下: -
C:&gt; myexe&lt;文件名
在Windows中使用命令shell进入DOS提示符。或者开始运行..并输入cmd
在Mac上,这称为终端(在“探照灯”中键入“终端”以进入终端)。
答案 2 :(得分:2)
默认情况下,程序将从stdin获取输入,stdin是一个基于键盘输入填充的缓冲区(默认情况下)。但是,您也可以告诉程序从文本文件中填充标准输入。
使用基于* nix的系统,您只需创建一个文本文件,并将其保存为您想要的任何内容,例如“test_input”。填写您想要传递给您的程序的输入,保存它,然后像这样运行您的程序:
./a.out < test_input
这称为重定向,因为您“重定向”(如果您愿意)输入来自文件,而不是默认(键盘)。它有两种方式,您也可以将输出重定向到文件,而不是使用另一个尖括号的'stdout','&gt;'。
使用Visual Studio ,而不是弹出打开命令提示符来执行上述命令之类的操作,您可以使用C ++ ifstream,将文本文件放在本地目录中,然后只需使用ifstream到处都是stdin:
ifstream sin("test_input.txt" , ifstream::in);
int value;
sin >> value;
您可以使用ofstream输出到文件。
请注意,ifstreams和ofstreams是C ++对象,并且不能在C中使用。虽然您可以写入文件并从C中读取文件,但它比简单地替换cout和cin的所有实例有点棘手。你实际上必须考虑你正在阅读和写作的内容:)