【发布时间】:2021-02-19 12:57:02
【问题描述】:
在代码中,我将每个字符转换为 '(',如果它在整个字符串中只出现一次,或者如果它出现多次,则转换为 ')'。我通过了几乎所有的测试,除了输入“$$\”的测试。它给出“缺少终止字符”错误。我看到问题是'\'字符。如果我添加第二个'\'很好,但是有没有一种快速的方法来修复它,或者我应该以某种方式将指针的大小加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;
【问题讨论】:
-
不,当你的意思是字符串中的一个反斜杠时,只使用“\\”。
-
除非问题在于实现编译器和检测编译错误,或者系统损坏,否则在线判断系统会给出如此无效的C代码是没有意义的。看来我们想要网站的确切规格。
-
我认为您的困惑是认为“\\”是两个字符。它是 C 中的一个反斜杠。strlen 将为 1。
-
"输入是固定的..." 不,输入是非法的 C