来自终端C程序的文件输入

Lan*_*e_P 1 c bash cmd

我正在开始一个C项目,我的教授希望我们使用以下格式来运行我们的程序:

./prog stop_words_dir < chapter.txt
Run Code Online (Sandbox Code Playgroud)

我的理解是,这意味着我正在执行一个名为program的程序prog,该程序将一个目录作为其参数(在本例中stop_words_dir)并使用该目录中指定的特定文件chapter.txt.

  1. 我对么?
  2. 如果是这样,这种格式的Unix(更具体地说是bash)是否具体?
  3. Windows中的等效命令是什么样的?
  4. 使用the <而不是第二个参数有什么好处
  5. 如何chapter.txt使用给定格式访问C程序?(我知道如何使用两个参数执行此操作)

Jon*_*ler 6

  1. 我对么?

不是完全.shell(任何类似Unix的shell - Bash当然,还有Bourne,Korn和其他shell,甚至包括C shell系列)运行以prog当前目录命名的程序,以字符串stop_words_dir作为参数,并使用其标准输入读取从当前目录中的文件调用chapter.txt.

  1. 如果是这样,这种格式的Unix(更具体地说是Bash)是否具体?

使这个特定于Unix的唯一因素是使用/.在Windows上,使用本机shell,/会导致混淆(当然对于cmd.exe'shell').

  1. Windows中的等效命令是什么样的?
    prog stop_words_dir < chapter.txt
Run Code Online (Sandbox Code Playgroud)
  1. 使用'<'而不是第二个参数有什么好处.

主要是shell打开文件并处理错误(如果它不存在).如果<未使用,您的程序将不得不进行打开,并处理错误.其次,您可以使用just scanf()getchar()read来读取标准输入,而不是需要使用fscanf()getc()(或亲属)来读取数据.这只是一个小小的好处.通常,您编写程序以便它处理任何给定的文件流,并stdin在程序需要从标准输入读取时简单地传递.这个功能更通用 - 并且可以重复使用.

  1. 我将如何访问chapter.txtC程序(使用给定的格式.我知道如何使用两个参数执行此操作)?

使用标准I/O函数从标准输入读取,例如scanf()getchar(),或使用通用I/O函数,但指定stdin为文件流(例如fgets()fread()- 或fscanf()getc(),或......).