忽略'<'和'>'在c的命令行

时间:2018-05-18 05:30:31

标签: c arrays

我创建了一个程序,它从命令行获取数字并添加它们,如果写了一个不是数字的东西,程序应该打印错误,但当它读取>或者<它创建带有结果的文本文件或重写现有的文本文件,如果它不存在它只是停止而不运行代码,有没有办法阻止这种情况发生并像其他数组一样读取它?

以下是错误的示例

  

$ ./a +24< 5

     

bash:5:没有这样的文件或目录

2 个答案:

答案 0 :(得分:4)

那不是你的程序 - 那是shell文件的I / O重定向。如果您希望自己的计划看到<>,请对其进行适当的转义:

./a +24 \<5

答案 1 :(得分:1)

正如其他人所说,不是你的程序正在运行,而是命令行shell使用&lt;和&gt;作为输入/输出重定向运算符。你可以用反斜杠来逃避它们。

但不是强迫用户逃避每个&lt;和&gt; (可能还有一些其他特殊字符,比如$和括号),你可以引用整个命令行:

./a '1 < 24'

整个命令现在位于argv[1]。你仍然需要解析它。作为奖励,不再需要在令牌之间插入恼人的空格:

./a '1<24'