我错过了我的功能吗?

时间:2010-12-13 16:53:44

标签: c++ string function reverse

这是我到目前为止所得到的错误。有什么帮助吗?

void ReverseString(char* string) {
    int len = strlen(string);
    for(int i = 0; i < len; i++)
    {
         string[i] = string[len-i];
    }
}

5 个答案:

答案 0 :(得分:6)

  • i0时,您将访问 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];  
    }  
}