使用循环向后打印char数组c ++

时间:2015-11-07 21:37:25

标签: c++ arrays

我正在尝试向后打印一个未知长度的数组,所以写道,循环应该从终结符开始,然后转到打印每个字母的第一个字母,但它只保留打印第一个字母

#include <iostream>
using namespace std;

int main()
{
    char word[10];
    int i;

    cout << "Enter a word: " ;
    cin >> word;

    for ( word[i]= '\0'; word[1] <0; word[i] --)
    {
        cout << word[i] << endl;

    }
    return 0;
}

4 个答案:

答案 0 :(得分:6)

你可以向后打印C风格的字符串:

reverse_copy(word,word+strlen(word),ostream_iterator<char>(cout));

另外考虑使用std::string

string word;
cin >> word;

copy(word.rbegin(),word.rend(),ostream_iterator<char>(cout));

您需要#include以下标题才能使上述示例正常工作:

<algorithm>, <iostream>, <iterator>, <string> and <cstring>

答案 1 :(得分:0)

替换你的循环它什么都不做:

for (i= strlen(word); i >=0; i--)
    {
        cout << word[i] << endl;  //endl is optional

    }

同样,对于长字符串,您可能需要增加char数组的大小或更好地使用

string word;
for (i= word.size(); i >=0; i--)
        {
            cout << word[i] << endl;  //endl is optional

        }

答案 2 :(得分:0)

这是向后打印C风格字符串的简单方法。

for (size_t i = 0, i_end = std::strlen(word); i != i_end; ++i)
{
    std::cout << word[i_end - i - 1];
}
std::cout << "\n";

请注意,我保存strlen的结果,以便每次都不会调用它。

答案 3 :(得分:-2)

要获得所需的结果,您可能需要使用此代码......

char word[10];
int sz; 

do {
    cout << "Enter a word: ";
    cin >> word;
    sz = strlen(word);

} while (sz > 10);


for (int i = sz; i >= 0; i--)
{
    cout << word[i];

}