我正在尝试向后打印一个未知长度的数组,所以写道,循环应该从终结符开始,然后转到打印每个字母的第一个字母,但它只保留打印第一个字母
#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;
}
答案 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];
}