首先让我说这与家庭作业有关.但是,这是一项非常小且相对微不足道的任务.
C程序通过命令行参数接收输入,但它需要采用以下形式:
$ ./program < input
Run Code Online (Sandbox Code Playgroud)
怎么,我会把这个输入作为一个字符串接收?每次我尝试从argv打印出第3个参数时,都会收到以下消息:
输入:没有这样的文件或目录.
Dou*_*der 21
<是一个shell重定向 - 它在程序之外处理.您将看到的是发送到标准输入流的文件名"input"的内容.这是程序运行的常用方法,尽管它们通常也会处理文件名,例如sed.
如果我不得不猜我会认为:
input: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
是来自shell,因为它无法打开指定的文件:"输入".
另一方面,如果你真的想要< input你的程序的as参数,你可以转义或引用它们,以便shell不会解释它们.(作为读者的练习逃离:-)).
Pie*_*don 10
该./program < input语法是一个特殊的shell语法说"重定向指定的文件中所有input的程序的标准条目".
要读取输入,您的程序只需使用标准输入读取功能,行fgets或scanf.
在*nix系统,因此不会成为的第三个要素argv.如果你在几乎任何类Unix的shell上执行该命令,它将类似于这样做:
cat input | ./program
Run Code Online (Sandbox Code Playgroud)
所以你./program只有一个元素argv,但它stdin是文件input,所以要阅读你刚读取的文件stdin.请注意,这是设计程序的完美有效方法.如果没有给出文件,许多Unix程序都会从标准输入读取,这样你就可以管理来自其他程序的输入(或者在这种情况下,来自文件).
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |