bash - 双反斜杠和单反斜杠在命令行上产生相同的字符串
问题描述
int main(int argc, char **argv) {
char *str;
str = argv[1];
printf("%s", str);
return 0; }
当使用这两个字符串执行程序时:
$./program "\abc"
$./program "\\abc"
两者都运行将相同的字符串存储在str
变量中,如str = \\abc
.
运行时如何获得四个反斜杠\\abc
或运行时如何获得单个反斜杠\abc
?
解决方案
您永远不会从 获得四个反斜杠\\
,但如果您想按字面传递字符串,请使用单引号:
将字符括在单引号 (
'
) 中会保留引号内每个字符的文字值。单引号之间不能出现单引号,即使前面有反斜杠。
例如:
./program '\abc' # passes a four-character string: \ a b c
./program '\\abc' # passes a five-character string: \ \ a b c
推荐阅读
- android - 如何在android中将顶部手柄添加到底部?
- angular - 根据从 Angular 中的订阅返回的数据为变量赋值。(可能吗 ?)
- php - 我的 PHP MYSQL 查询未以 HTML 格式返回所有结果 - 需要显示演出表内容的完整历史记录,仅显示部分内容
- php - 换行符分隔的 fwrite() 是否可以在 PHP 中的 SIGINT/SIGKILL 中截断一行?
- arduino - 处理 IDE - 双击不同条件的按钮
- css - React-Native:滚动视图不尊重证明内容?
- reactjs - ReactJS Material UI粘性页脚不起作用
- python - 尝试从文本文件中对列进行排序
- java - java - 在输入int,char和int时如何避免Java中的InputMismatchException
- laravel - 如何从laravel中的url中删除id