我在我的功能中遗漏了啥吗?
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::string
和 std::reverse
,我自己。
【参考方案1】:
当i
为0
时,您将访问
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`后中继生成无效查询-我做错了啥吗?