通过C中的命令行传递标点符号

Nic*_*dio 0 c io bash ubuntu program-entry-point

我有一个程序可以从命令行读取自然语言的句子并对其进行处理。

一些标点符号不被接受:或者我收到一条特定的错误消息(例如,当我使用括号时),或者我收到了>(例如,当我键入时'),好像终端仍在等待什么。

一个快速的解决方法是在引号中包含单个“有问题”的单词,但对我来说似乎不是一个很好的解决方法。

难道没有一种方法可以使命令行准备好将任何字符用作有效输入,而无需让“用户”考虑是否要在引号中包含什么吗?

为了完整起见,这就是我编写命令行内容的方式:int main(int argc , char ** argv){我想这是标准方式。

我正在使用最后一个Ubuntu,不知道这是否相关。

ctt*_*ctt 5

这里的问题与程序无关,而与调用程序有关。

从外壳程序(如bash)调用程序时,外壳程序会帮您一个忙,并在空白处分割命令行参数。它还将解释特殊字符(如)>;(用于重定向,拆分命令和启动子shell。

为了关闭此行为,必须在这些特殊字符前面加上\或在单引号或(仅在大多数情况下)双引号中包含命令行参数,以对这些特殊字符进行转义。

仅当您的程序由外壳执行时才需要这样做。如果它是由您控制的程序执行的,则您将直接控制传递给程序的参数列表(argv程序main()功能中的)。