2010-12-13 70 views
2

这是我到目前为止,我不断收到错误。任何帮助?我在我的功能缺少的东西?

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

这将有助于了解错误。是因为你在'for'块尾部使用了'{'? – birryree 2010-12-13 16:54:52

+4

我认为你自己缺少'std :: string'和'std :: reverse'。 – 2010-12-13 17:05:07

回答

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]); 
} 
2

首先,你会得到一个错误,第6行

更改{}。然后再试一次。

+0

这就是我的复制错误。这不是为什么我得到错误,但是。 – 2010-12-13 17:01:01

+0

@Josh Lake你接受了一个答案,所以我猜这个问题已经解决了,并且我没有必要更换我的。 – Secko 2010-12-13 17:29:02

1

除了台现有提到的错误:

你会是个回文出原始的字符串。上半场将等于下半场逆转。不过,下半场将保持不变。这不是函数名称声明的内容。

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]; 
    } 
} 
+1

oops,反转字符串到位需要交换,我的不好 – ThomasMcLeod 2010-12-13 17:06:03

+0

我是一个新手 - 为什么不会代码缩进? – ThomasMcLeod 2010-12-13 17:21:52

+0

选择代码并按下“Ctrl + K”。 – ruslik 2010-12-13 17:24:04

1

这是标记C++,做到这一点的C++方式...

std::string ReverseString(std::string str) 
{ 
    std::reverse(str.begin(), str.end()); 
    return str; 
} 
+1

'return std :: string(str.rbegin(),str.rend());'那么你甚至可以把输入作为const引用。 – 2010-12-13 18:48:28

相关问题