当前位置: 首页 > 面试题库 >

argv:清除通配符

阎安邦
2023-03-14
问题内容

我正在研究K&R
C书中的一个示例,该示例要求您实质上构建一个RPN计算器,该计算器通过命令行参数来接受输入。我的解决方案实质上是遍历给定的参数并给出答案,但我注意到了一些问题:

如果我要给乘法字符(星号)'*'不加单引号,则gcc假定它是通配符输入,因此我的输入为

$./rpn 5 10 *

给我输出

read 5
read 10
read rpn
read rpn.c
= 0

用单引号括住星号可解决此问题

$./rpn 5 10 '*'
read 5
read 10
read *
= 50

我的问题是是否有一种方法可以清理输入内容,以便我的程序不需要将星号用单引号引起来,还是此行为是由更基本的东西(例如Linux / POSIX /
UNIX二进制执行和参数处理)引起的?


问题答案:

在执行程序之前,外壳程序正在扩展glob。您引用glob并不是因为GCC,而是因为shell。如果您不希望出现这种情况,请使用不支持glob的shell。



 类似资料:
  • void clear_config([string var]) This clears all assigned config variables. If a variable name is supplied, only that variable is cleared. 清除所有配置变量,如果指定了变量名称,则只清除所指定的配置变量。 Example 13-10. clear_config 例

  • 问题内容: 我们希望在生产部署中缓存崩溃,但不要浪费大量时间来弄清楚这样做的系统。我的想法是将具有当前版本号的paras应用于css和js文件的末尾: 两个问题:这会有效地打破缓存吗?由于参数表明这是动态内容,因此该参数会导致浏览器从不缓存该URL的响应吗? 问题答案: 参数表示查询字符串,因此浏览器将认为这是从到的新路径。因此导致它从文件而不是从缓存加载。如你所愿。 而且,浏览器将假定下次调用时

  • 问题内容: 我们希望在生产部署中缓存崩溃,但不要浪费大量时间来弄清楚这样做的系统。我的想法是将具有当前版本号的paras应用于css和js文件的末尾: 两个问题:这会有效地打破缓存吗?由于参数表明这是动态内容,因此该参数会导致浏览器从不缓存该URL的响应吗? 问题答案: 参数表示查询字符串,因此浏览器将认为这是从到的新路径。因此导致它从文件而不是从缓存加载。如你所愿。 而且,浏览器将假定下次调用时

  • 我只想在进行ajax调用时清除上一个间隔并设置一个新的间隔。 当前代码为: 我尝试了许多推荐的变化,以便能够从函数外部清除间隔。如; 将"间隔"变量设置为null或false, 窗设定间隔, 在setInterval中写入计数函数, 将count函数作为ajax函数之外的单独函数编写, 但这两种变化都没有消除间隔。 稍后,我还需要清除键入的间隔。

  • 我目前正在开发一个应用程序,使用辅助服务来处理通知。尤其令人讨厌的是,第三方应用程序除了启动与通知相关的意图(并启动应用程序)之外,没有办法清除状态栏通知。

  • 我有一个如下定义的表视图 当用户单击时,我使用单击的项目详细信息重新加载表。在我重新加载之前,我对表项调用清除 现在,当我单击另一个项目并尝试重新加载表格时,它看起来像下面这样。这是非常奇怪的,因为应该只有一行,但行的大小是一样的,就像从以前的点击,其余的行是空的,除了图标。当我点击图标时,没有任何反应。任何人以前都面临过这种情况。有人知道这是什么原因吗? 我的工具定义如下。它们只是2 的