我试图用char数组中的转义版替换单引号和双引号。我这样做是因为strtok
在点击它们时不会解析过去的单引号/双引号。
我编写了以下函数来尝试替换char数组中的单/双引号:
void replaceQuotes(char *command){
int i;
for(i = 0; i < strlen(command); i++){
//if detected a double quote, escape it
if(command[i] == '\"'){
command[i] = '\\\"';
}
// if detected a single quote, escape it
if (command[i] == '\''){
command[i] = '\\\'';
}
}
}
但是,我从gcc
收到以下错误:
shell_lib.h: In function ‘replaceQuotes’:
shell_lib.h:10: warning: overflow in implicit constant conversion
shell_lib.h:14:17: warning: multi-character character constant
shell_lib.h:14: warning: overflow in implicit constant conversion
有更清洁的方法吗?实际上,我不确定这是否有效,或者strtok是否实际上正确地读取了转义序列(如果我能够逃脱它们)作为单/双引号。关于strtok返回NULL
时遇到双/单引号的其他方法的建议也不胜感激!
感谢您提前提供任何帮助。
答案 0 :(得分:1)
'\\\''
这是为了引用一个单号字符。但是你想在那里放两个角色。你不能这样做。
如果你试图逃避你的字符串,你必须创建一个新字符串(或移动当前的字符串)以插入额外的字符。
然而,听起来你的真实问题就是你试图用strtok做的事情,这应该可以正常工作,而不需要在字符串中进行任何转义。