argv:消毒通配符

我正在做一个K&R C书中的例子,它要求你基本上build立一个rpn计算器,它通过命令行参数来input。 我的解决scheme基本上遍历给定的参数,并吐出答案,但我注意到了一些事情:

如果我给乘法字符(星号) '*'没有单引号,gcc认为是一个通配符input,所以我的input

$./rpn 5 10 *

给我一个输出

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

用单引号包裹星号可以解决问题

如何通过代理服务器环境获得非标准服务?

ALSA:防止扬声器不足的方法

关于标准信号的传送

在Ubuntu和OSX上编译和链接OpenSSL

重叠的I / O:一些function仍然缺失

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

我的问题是有没有办法消毒input,以便我的程序不需要用单引号包裹星号,或者是由更基本的东西(例如Linux / POSIX / UNIX二进制执行和参数处理)引起的这种行为?

实现IValueConverter将string转换为图像

将printfredirect到pipe道C

Windows和Mac OS X IO的差异,2015年的性能调整?

为什么wait4()被waitpid()取代

AdjustwindowRect文档

在执行程序之前,shell正在扩展glob。 你引用glob不是因为GCC,而是因为shell。 如果你不想要这个行为,那么使用一个不尊重globs的shell。

给作为输入

$./rpn "5 10 *"

在""和程序中的所有参数,你会得到argv[1]下的所有参数,然后通过空间分离来解析该字符串。

通过这种方式,你需要以特殊的方式处理任何通配符/特殊字符。

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...