我想为我的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
被解释为斜杠而不是tab
是否有一个简单的解决方案,或者我是否必须检查我希望我的程序处理的每个转义字符?像这样的东西?:
char *truetab="\t";
if(argv[1][0]=='\\' && argv[1][1]=='t')
res = truetab;
感谢。
答案 0 :(得分:1)
不幸的是,你需要手动完成:处理转义序列是编译器的工作,当"hello\tworld"
常量在编译代码中的字符串常量区域结束时,\t
已经是替换为ASCII码9(TAB
)。它不应该那么困难 - 事实上,它是经典K&R书的练习号3.2:
练习3-2。编写一个函数转义符(s,t),将newline和tab等字符转换为 可见的转义序列,如\ n和\ t,因为它将字符串t复制到s。使用开关。写一个 也适用于另一个方向,将转义序列转换为真实字符。
答案 1 :(得分:1)
如果你在linux中使用 bash ,你可以按 Ctrl + V 并点击标签,并用''
引用它,你几乎可以通过转义字符如esc
输入:
./a.out 'Ctrl+v tab'
BTW,我不知道哪个软件提供了这个功能,也许所有类似unix的终端都可以做到这一点