配列に入っている文字を逆に入れたいけどやり方がわからない。。
私が逆順にする方法をお教えしましょう!
プログラムの作成手順を一つずつ見ていきながら、理解しましょう♪
ポインタを使って簡単に実装させましょう!
プログラムを作成する前に
このプログラムを作るために必要な知識は何かありますか?
まず、文字列を扱うので、文字列についての知識は必要ですが、特にポインタについての知識が今回は必要になるので先に理解しておきましょう!
ポインタについて以下の記事でも解説してありますのでよければご覧ください。
その1:全体像を考える
早速コードを書いていきましょう!
まずは全体像を掴んでからでないと途中で何を書けばいいのかわからなくなりますよ!
なるほど、、
それではどのような構成でプログラムを書くのか考えましょう♪
今回はポインタを使用していきます。
プログラムを実行すると、あらかじめ書いておいた文字列が、逆順に画面に表示されるものを作りましょう。
その2:コードを書いていく
プログラムのイメージがついたので、書いていきましょう!
まずは簡単なプログラムではいじらなくて良い部分をささっと書きます。
#include <stdio.h>
int main() {
return 0;
}
このmain関数内にこれから書いていきます。
まずはポインタを二つ用意します。
char *p1, *p2;
p2 = "Kankiri blog" ;
p1 = p2;
ポインタの両方に文字列を入力していきます。
while文を使って、最後の文字が入っている場所までポインタの番地を増やします。
ここで用意した片方のポインタの数値を変えるんですね。
そうです。
文字列の入っている最後のアドレス(番地)を特定するためにポインタを二つ用意しました!
while ( *p1 != '\0' ) {
p1++;
// 文字列の最後を検索
}
これでp1の数値が文字の長さ分p2よりも大きくなったのでwhile文の条件式で利用できます!
あとはputchar関数を使って文字を一つずつ表示させれば完成です!!
}
while (p1>p2) {
p1--;
putchar(*p1);
}
putchar( '\n' );
その3:完成!
それではこれまで書いてきたものをまとめましょう!
#include <stdio.h>
int main() {
char *p1, *p2;
p2 = "Kankiri blog" ;
p1 = p2;
while ( *p1 != '\0' ) {
p1++;
// 文字列の最後を検索
}
while (p1>p2) {
p1--;
putchar(*p1);
}
putchar( '\n' );
return 0;
}
それでは実行してみます!
うまく作成することができていますね♪
まとめ
今回はポインタを使って文字列を逆順に表示させました!
ポインタの知識があれば理解しやすいので、ポインタの復習はしっかりしておきましょう!
他にも✳︎で三角形を表示させるプログラムなどを解説していますので気になる方はぜひ見てください。