認めざるを得ませんが、ポインターの使用方法がわかりませんが、それでも試してみました。私のプログラムの問題は、文字列が逆に表示されることです。ただし、最初の文字が欠落しており、文字列全体が 1 つ前のスペースに移動し、最初の要素が空白になっています。たとえば、「hello」と入力すると「olle」と表示されます。
#include <iostream>
#include <string>
using namespace std;
string reverse(string word);
int main()
{
char Cstring[50];
cout<<"enter a word: ";
cin>>Cstring;
string results = reverse(Cstring);
cout <<results;
}
string reverse(string word)
{
char *front;
char *rear;
for (int i=0;i< (word.length()/2);i++)
{
front[0]=word[i];
rear[0]=word[word.length()-i];
word[i]=*rear;
word[word.length()-i]=*front;
}
return word;
}
新しいコードは完全に機能します。文字列を cstrings に変更しました。技術的にはcstringについて質問されましたが、文字列の方が簡単だと思うので、文字列を操作してから、必要な変更を加えてc文字列にします。リアとフロントも初期化する方法を見つけました。
#include <iostream>
#include <cstring>
using namespace std;
string reverse(char word[20]);
int main()
{
char Cstring[20];
cout<<"enter a word: ";
cin>>Cstring;
string results = reverse(Cstring);
cout <<results;
}
string reverse(char word[20])
{
char a='a';
char b='b';
char *front=&a;
char *rear=&b;
for (int i=0;i< (strlen(word)/2);i++)
{
front[0]=word[i];
rear[0]=word[strlen(word)-1-i];
word[i]=*rear;
word[strlen(word)-1-i]=*front;
}
return word;
}