【发布时间】:2014-07-24 02:59:57
【问题描述】:
我正在尝试用 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 的其他方法的建议!
提前感谢您的帮助。
【问题讨论】:
-
您正在做的是将单个字符替换为 2 个字符。
strtok的分隔符是什么? -
我使用空格分隔,即
" "。是的,我有这种怀疑,但我想也许因为转义字符是为了在我的源文件中转义,它可能只编译为一个字符。这可能没有任何意义。