我在我的功能中遗漏了啥吗?

Posted

技术标签:

【中文标题】我在我的功能中遗漏了啥吗?【英文标题】:Am I missing something in my function?我在我的功能中遗漏了什么吗? 【发布时间】:2010-12-13 16:53:44 【问题描述】:

这是我到目前为止所拥有的,但我不断收到错误消息。有什么帮助吗?

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

【问题讨论】:

知道错误会很有帮助。是因为您在 for 块的末尾使用了 吗? 我认为您缺少 std::stringstd::reverse,我自己。 【参考方案1】:i0 时,您将访问 string[len] 不正确为 长度数组中的有效索引 len[0,len-1]

如果我正确理解您的意图,您正在尝试反转字符串,但我可以看到缺少一些内容:

你没有交换。 交换也应该发生在 数组的一半,不为 整个阵列。

以下 sn-p 修复了这些问题:

int len = strlen(string);
for(int i = 0; i < len/2; i++) 
    swap(string[len-i-1],string[i]);

【讨论】:

【参考方案2】:

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

更改为。然后再试一次。

【讨论】:

这是我的复制错误。这不是我收到错误的原因。 @Josh Lake 你接受了一个答案,所以我想问题已经解决了,我不需要改变我的。【参考方案3】:

除了两个已经提到的错误:

您将使用原始字符串制作回文。上半场将等于下半场倒数。但是,下半场将保持不变。这不是函数名声明的内容。

【讨论】:

【参考方案4】:

这是标记为 C++,以 C++ 方式进行操作...

std::string ReverseString(std::string str) 

  std::reverse(str.begin(), str.end());
  return str;

【讨论】:

return std::string(str.rbegin(), str.rend()); 怎么样,你甚至可以将输入作为 const 引用。【参考方案5】:

应该是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];  
      
 

【讨论】:

哎呀,反转字符串需要交换,我的错

以上是关于我在我的功能中遗漏了啥吗?的主要内容,如果未能解决你的问题,请参考以下文章

我的代码看起来很完美,但显示错误的输出。有人可以帮我我在这里做错了啥吗?

有人能告诉我在objective-c中保留和释放到底做了啥吗?

使用`setVariables`后中继生成无效查询-我做错了啥吗?

使用 onUpgrade 不起作用,我错过了啥吗?谢谢

未发送有关可用应用更新的 Google Play 推送通知。我错过了啥吗?

我在编写代码以检索 IOS 资产库时遗漏了一个步骤,但我遗漏了啥?