我正在开始一个C项目,我的教授希望我们使用以下格式来运行我们的程序:
./prog stop_words_dir < chapter.txt
我的理解是,这意味着我正在执行一个名为prog
的程序,该程序将目录作为其参数(在本例中为stop_words_dir
)并使用该目录中名为{{1}的特定文件}}
chapter.txt
而不是第二个参数<
? (我知道如何使用两个参数执行此操作)答案 0 :(得分:6)
- 我说错了吗?
醇>
不完全。 shell(任何类似Unix的shell - Bash当然,还有Bourne,Korn和其他shell,甚至包括C shell系列)从当前目录运行名为prog
的程序,字符串为stop_words_dir
作为参数,并使用标准输入读取当前目录中名为chapter.txt
的文件。
- 如果是这样,这种格式是Unix(更具体地说是Bash)具体吗?
醇>
使这个特定于Unix的唯一因素是使用/
。在Windows上,使用本机shell,/
会导致混淆(当然对于cmd.exe
'shell')。
- Windows中的等效命令是什么样的?
醇>
prog stop_words_dir < chapter.txt
- 使用'&lt;'有什么好处?而不是第二个参数。
醇>
主要是shell打开文件并处理错误(如果它不存在)。如果未使用<
,您的程序将不得不进行打开,并处理错误。其次,您只能使用scanf()
和getchar()
来读取标准输入,而不需要使用fscanf()
或getc()
(或亲属)来读取数据。这只是一个小小的好处。通常,您编写程序以便处理任何给定的文件流,并在程序需要从标准输入读取时简单地传递stdin
。然后,该功能更加通用 - 并且可以重复使用。
- 我如何在C程序中访问
醇>chapter.txt
(使用给定格式。我知道如何使用两个参数执行此操作)?
使用标准I / O函数从标准输入读取,例如scanf()
或getchar()
,或使用常规I / O函数,但指定stdin
作为文件流(例如为fgets()
或fread()
- 或fscanf()
或getc()
,或......)。