我创建了一个程序,它从命令行获取数字并添加它们,如果写了一个不是数字的东西,程序应该打印错误,但当它读取>或者<它创建带有结果的文本文件或重写现有的文本文件,如果它不存在它只是停止而不运行代码,有没有办法阻止这种情况发生并像其他数组一样读取它?
以下是错误的示例
$ ./a +24< 5
bash:5:没有这样的文件或目录
答案 0 :(得分:4)
那不是你的程序 - 那是shell文件的I / O重定向。如果您希望自己的计划看到<
或>
,请对其进行适当的转义:
./a +24 \<5
答案 1 :(得分:1)
正如其他人所说,不是你的程序正在运行,而是命令行shell使用&lt;和&gt;作为输入/输出重定向运算符。你可以用反斜杠来逃避它们。
但不是强迫用户逃避每个&lt;和&gt; (可能还有一些其他特殊字符,比如$和括号),你可以引用整个命令行:
./a '1 < 24'
整个命令现在位于argv[1]
。你仍然需要解析它。作为奖励,不再需要在令牌之间插入恼人的空格:
./a '1<24'