はじめに
ポインタはメモリへの直接アクセスを提供し、ポインタを使用することで、メモリ内の変数や配列の値とアドレスにアクセスして操作することができます。この実験で作成するプログラムは、ポインタ変数を使用して与えられた文字列を逆順にするものです。
注:コーディングを練習し、gcc を使ってコンパイルして実行する方法を学ぶために、自分で
~/project/main.cファイルを作成する必要があります。
cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main
文字列変数を宣言する
まず、2 つの char 配列を宣言します。1 つは元の文字列を格納するためのもので、もう 1 つは逆順にした文字列を格納するためのものです。
char str[100];
char rev[100];
ポインタ変数を宣言する
次に、2 つのポインタ変数を宣言します。1 つは文字列 str の最初の要素を指すためのもので、もう 1 つは逆順にした文字列 rev の最初の要素を指すためのものです。
char *sptr = str;
char *rptr = rev;
ユーザーから入力を取得する
scanf 関数を使って、ユーザーに逆順にしたい文字列を入力してもらいます。
printf("Enter a string: ");
scanf("%s", str);
文字列の終端を見つける
文字列を逆順に走査できるように、文字列の終端を見つける必要があります。sptr が文字列の末尾の null 文字を指すまでインクリメントするために、while ループを使用します。
while(*sptr)
{
sptr++;
}
文字列を逆順にする
次に、while ループを使って文字列 str を逆順に走査します。null 文字から文字列の最後の文字に向かって sptr をデクリメントし、文字列の各要素に対して、* 演算子を使って逆順の文字列 rev に値を格納します。
while(sptr >= str)
{
*rptr = *sptr;
rptr++;
sptr--;
}
逆順にした文字列の末尾に null 文字を追加する
逆順にした文字列の末尾に到達しました。逆順にした文字列の末尾に null 文字を追加する必要があります。
*rptr = '\0';
逆順にした文字列を元の文字列にコピーする
次に、逆順にした文字列を元の文字列にコピーします。
strcpy(str, rev);
逆順にした文字列を表示する
最後に、逆順にした文字列を表示します。
printf("Reversed string: %s\n", str);
まとめ
この実験では、ポインタ変数を使って与えられた文字列を逆順にする方法を学びました。ポインタはメモリへの直接アクセスを提供し、それを使うことで、メモリ内の変数や配列の値とアドレスにアクセスして操作することができます。while ループを使って文字列を逆順に走査し、逆順にした文字列を新しい文字配列に格納し、逆順にした文字列の末尾に null 文字を追加しました。最後に、逆順にした文字列を元の文字列にコピーして表示しました。



