Nic*_*dio 0 c io bash ubuntu program-entry-point
我有一个程序可以从命令行读取自然语言的句子并对其进行处理。
一些标点符号不被接受:或者我收到一条特定的错误消息(例如,当我使用括号时),或者我收到了>(例如,当我键入时'),好像终端仍在等待什么。
一个快速的解决方法是在引号中包含单个“有问题”的单词,但对我来说似乎不是一个很好的解决方法。
难道没有一种方法可以使命令行准备好将任何字符用作有效输入,而无需让“用户”考虑是否要在引号中包含什么吗?
为了完整起见,这就是我编写命令行内容的方式:int main(int argc , char ** argv){我想这是标准方式。
我正在使用最后一个Ubuntu,不知道这是否相关。
这里的问题与程序无关,而与调用程序有关。
从外壳程序(如bash)调用程序时,外壳程序会帮您一个忙,并在空白处分割命令行参数。它还将解释特殊字符(如)>,;并(用于重定向,拆分命令和启动子shell。
为了关闭此行为,必须在这些特殊字符前面加上\或在单引号或(仅在大多数情况下)双引号中包含命令行参数,以对这些特殊字符进行转义。
仅当您的程序由外壳执行时才需要这样做。如果它是由您控制的程序执行的,则您将直接控制传递给程序的参数列表(argv程序main()功能中的)。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |