2011-09-17 13 views
1

次のような出力が得られます:olleh helloしかし、どこが間違っているのか分かりません!文字列を反転する際の質問

int main() 
    { 

     char hello[6] = "hello"; 
     char temp[6]; 
     unsigned int t = 0; 
     for(int i=strlen(hello)-1;i>=0;i--) 
     { 
     if(t<strlen(hello)) 
     { 
      temp[t] = hello[i]; 
      t++; 
     } 
     } 
     cout << temp; 
     return 0; 
    } 
+2

ここに任意のミスを犯すことは困難です。しかし、あなたは6番目の要素を書くことはありません。ゼロ。 –

+0

ところで、 't'と' i'が結合されているので 'if(t RocketR

答えて

7

あなたは、文字列の末尾のヌルターミネータ必要があります:あなたはヌル(\0)とtempを終了していないので、tempは有効な文字列とcout doesnのではない

int main() 
{ 

    char hello[6] = "hello"; 
    char temp[6]; 
    unsigned int t = 0; 
    for(int i=strlen(hello)-1;i>=0;i--) 
    { 
    if(t<strlen(hello)) 
    { 
     temp[t] = hello[i]; 
     t++; 
    } 
    } 
    temp[t] = '\0'; 
    cout << temp; 
    return 0; 
} 
3

をそれをどうしたらいいのか分かりません。あなたが追加した場合、あなたの問題が離れて行きます。

temp[5] = 0; 

forループの後に。

+1

"' temp'は無効な文字列リテラルです。 " - ' temp'は変数です。リテラルにすることはできません。もちろん、 –

+1

です。それをキャッチするためにありがとう。 – adpalumbo

+0

さて、あなたは私の+1を持っています:) –

7

[C++]、ので、ここで文字列を逆にするC++の方法だと、あなたは質問をタグ付け:

#include <iostream> 
#include <string> 
#include <algorithm> 

int main() 
{ 
    std::string hello = "hello"; 
    std::reverse(hello.begin(), hello.end()); 
    std::cout << hello << std::endl; 
} 

をそれはあなたが6つの要素長く必要に応じて、あなたの一時配列を作った