这是我到目前为止所得到的错误。有什么帮助吗?
void ReverseString(char* string) {
int len = strlen(string);
for(int i = 0; i < len; i++)
{
string[i] = string[len-i];
}
}
答案 0 :(得分:6)
i
为0
时,您将访问
string[len]
这是不正确的
长度数组中的有效索引
len
是[0,len-1]
如果我理解你的意图是正确的,你试图扭转字符串,但我可以看到一些缺失:
以下代码段修复了这些问题:
int len = strlen(string);
for(int i = 0; i < len/2; i++) {
swap(string[len-i-1],string[i]);
}
答案 1 :(得分:2)
首先,你会在第6行得到一个错误。
将{
更改为}
。然后再试一次。
答案 2 :(得分:1)
除了两个已经提到的错误之外:
你会用原始字符串制作一个回文。上半场将与下半场相反。但是,下半场将保持不变。这不是函数名称声明的内容。
答案 3 :(得分:1)
这是标记的C ++,用C ++方式做...
std::string ReverseString(std::string str)
{
std::reverse(str.begin(), str.end());
return str;
}
答案 4 :(得分:0)
应为string[i] = string[len-i-1];
// added (untested):
void ReverseString(char * string) {
int len = strlen(string);
for(int i = 0; i < len / 2; i++)
{
string[i] ^= string[len-i-1];
string[len-i-1] ^= string[i];
string[i] ^= string[len-i-1];
}
}