如何提供转义字符作为命令行参数

How to supply escape characters as command-line arguments

本文关键字:命令行 参数 何提供 转义字符      更新时间:2023-10-16

我想为我的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的终端都可以做到