在代码中,我将每个字符转换为'('如果在整个字符串中只出现一次,或者')',如果它出现不止一次。我通过了几乎所有的测试,除了输入&;$$&;的测试。它给出了"缺少终止字符"。错误。我看到问题是''字符。如果我添加第二个'',这是好的,但有没有一个快速的方法来修复它,或者我应该以某种方式添加1到指针的大小,然后添加第二个''?
注:输入是固定的。我不能改变它。
char text[] = "$$";
char *res = malloc(strlen(text));
int counter = 0;
for(int i = 0; i < strlen(text); i++) {
for(int j = 0; j < strlen(text); j++) {
if( tolower(text[i]) == tolower(text[j]) ) {
counter++;
}
}
if(counter == 1) {
res[i] = '(';
} else {
res[i] = ')';
}
printf("%c", res[i]);
counter = 0;
}
return 0;
既然我们已经建议使用三元组,您也可以选择使用幻数代替(x86解决方案):
#include <stdio.h>
int main(void)
{
char* text = (char*)&(int) <%6038564%>;
puts(text);
}
输出:
$$
或者如果你更喜欢神奇的数字027022044
,那就选择那个。
(不是很严肃的回答,但是今天是星期五,所以…)
可以使用三字符序列
char text[] = "$$??/"; // { dollar-sign, dollar-sign, backslash, zero }
没有什么可以从转义字符中转义,即使是转义字符字符…
在C语言中,所有转义序列由两个或多个字符组成
第一个是反斜杠,,称为转义字符。
其余字符决定转义序列的解释。
\
的转义序列等于5C
十六进制ascii值,表示Backslash
的字符。因此,为了使用反斜杠,必须使用两次。