如何提供转义字符作为命令行参数
How to supply escape characters as command-line arguments
我想为我的C程序提供转义字符作为命令行参数:
#include <cstring>
#include <cstdio>
int main(int argc,char**argv){
const char *str1 = "t";
const char *str2 = argv[1];
fprintf(stderr,"str1:%s:nstr2:%s:n",str1,str2);
return 0;
}
当运行时,它会给出:
/a.out "t"
str1: :
str2:t:
所以看起来我的t
被解释为斜线t而不是制表符
有没有一个简单的解决方案,或者我必须检查我希望我的程序处理的每个转义符?像这样的东西?:
char *truetab="t";
if(argv[1][0]=='' && argv[1][1]=='t')
res = truetab;
谢谢。
不幸的是,您需要手动执行:处理转义序列是编译器的工作,当"hellotworld"
常量出现在编译代码中的字符串常量区域时,t
已经被ASCII代码9(TAB
)取代。这应该没有那么难——事实上,这是经典K&R书:
练习3-2。编写一个函数转义符(s,t),将换行符和制表符等字符转换为当它将字符串t复制到s时,可以看到像\n和\t这样的转义序列。使用开关。编写函数,将转义序列转换为真实字符。
如果您在linux中使用bash,您可以按Ctrl+V并点击tab,然后用''
引用它,您几乎可以传递任何转义符,如esc
键入:
./a.out 'Ctrl+v tab'
顺便说一句,我不知道是哪个软件提供了这个功能,也许所有类似unix的终端都可以做到
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数