これは私が今までに持っていたもので、私は間違いを続けています。どんな助け?私の機能に何か不足していますか?
void ReverseString(char* string) {
int len = strlen(string);
for(int i = 0; i < len; i++)
{
string[i] = string[len-i];
}
}
これは私が今までに持っていたもので、私は間違いを続けています。どんな助け?私の機能に何か不足していますか?
void ReverseString(char* string) {
int len = strlen(string);
for(int i = 0; i < len; i++)
{
string[i] = string[len-i];
}
}
i
が0
あなたは私が意図正しくあなたをあなたを理解していれば長さ len
の配列内の有効なインデックスが[0,len-1]
ある として間違っている string[len]
にアクセスすることがありますされます文字列を逆にしようとしていますが、いくつか欠けていることがわかります:
次のスニペットは、これらの問題修正されます。すべての
int len = strlen(string);
for(int i = 0; i < len/2; i++) {
swap(string[len-i-1],string[i]);
}
まず、あなたは}
にライン上のエラー6.
変更{
になるだろう。その後、もう一度試してください。あなたは、元の文字列から回文を作ってあげる
:2以外にも
私のコピーエラーです。 Thatsはなぜ私がエラーを得るのではないのですか? –
@Josh Lakeあなたは答えを受け入れたので、問題は解決したと思います。私を変更する必要はありません。 – Secko
は、既にエラーを述べました。前半は後半が逆になる。しかし、後半は同じままです。これは、関数名が宣言したものではありません。
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];
}
}
oops、文字列を逆にするとスワップが必要になる – ThomasMcLeod
私は新人です - なぜインデントされませんか? – ThomasMcLeod
コードを選択し、Ctrl + Kを押します。 – ruslik
これは、C++タグ付けされ、C++の方法、それを行うべきである...
std::string ReverseString(std::string str)
{
std::reverse(str.begin(), str.end());
return str;
}
'return std :: string(str.rbegin()、str.rend());'それでは、入力をconst参照として受け取ることさえできます。 –
エラーを知って役立つだろう。 'for'ブロックの最後に' {'を使っているからですか? – birryree
私はあなたが 'std :: string'と' std :: reverse'を自分で見逃していると思います。 –