如何解决我可以将字符串存储在字符数组中但顺序相反,以便0index指向字符串中的最后一个字符吗?
我开始学习编程,我试图将一个字符串存储到一个字符数组中,但是顺序相反,这样数组索引位置0(零)指向字符串中的最后一个字符。我尝试以不同的方式使用for循环,但获得了所需的输出。我想用C ++解决这个问题。 这是我坚持的代码,
#include <iostream>
using namespace std;
int main()
{
char str[maxn];
string entstr;
cin>>entstr;
int len = entstr.length();
cout<<len<<endl;
for(int i = 0 ; i < len ; i++) //this makes \n no sense//
for(int j = len-1 ; j >= 0 ; j--)
str[i] = entstr[j];
for(int i = len-1 ; i >= 0 ; i--)
cout<<"Straight for array "<<i<<" "<<str[i]<<endl;
return 0;
}
OUTPUT:
sachin
6
Straight for array 5 s
Straight for array 4 s
Straight for array 3 s
Straight for array 2 s
Straight for array 1 s
Straight for array 0 s
解决方法
我想您不想使用注释中提到的std::reverse
,因为您想练习算法技能。
您可以通过此简短程序帮助自己。它使用std::malloc
分配输入字符串大小的char
数组。然后,您只需要向后遍历字符串的字符并将其存储到数组中即可。
我建议您遵循(写在纸上)循环内i
和len-1-i
的值。它将帮助您了解索引的工作原理。
#include <iostream>
using namespace std;
int main()
{
string entstr;
cin >> entstr;
int len = entstr.length();
char* charArray = (char*) malloc (len);
for(int i = 0; i < len; i++)
{
charArray[i] = entstr[len-1-i];
}
cout << "charArray contains: ";
for(int j = 0; j < len; j++)
{
cout << charArray[j];
}
return 0;
}
祝你好运!
,我认为两个循环没有用。只需从前面开始字符串,从len-1开始数组(就像在for循环中进行打印的方式一样)。您可以采用任意长度,而您希望char数组成为该长度。
#include <iostream>
using namespace std;
int main()
{
char str[100]; //put whatever you want the length of the char array to be
string entstr;
cin>>entstr;
int len = entstr.length();
cout<<len<<endl;
for(int i = 0 ; i < len ; i++)
{
str[len-1-i]=entstr[i];
}
for(int i = len-1 ; i >= 0 ; i--)
cout<<"Straight for array "<<i<<" "<<str[i]<<endl;
return 0;
}
对于同一指针,您也可以使用两个指针,即一个指针从前端开始,另一个指针从末尾开始(如果您感到困惑)
for(int i = 0,j=len-1 ; i < len ; i++,j--)
{
str[j]=entstr[i];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。