こんにちは､ そしてお帰りなさい｡ ここで､ もうひとつの課題があります｡ さて､ 皆さんは文字列や文字配列に慣れてきたでしょうか｡
cで非常に重要な概念です｡
この文字列リテラルを変数や文字配列に格納するという考え方は､ 配列であることを理解し､ 異なる要素にどのようにアクセスできるかを理解することになります｡
今回のチャレンジは､ そこにフォーカスしていきます｡
今回は､ 文字列関数の使い方を理解するための課題をもう一つ用意しました｡
しかし､ これは文字列と文字配列の概念に慣れ親しんでもらうためのものです｡
つまり､ この課題の条件は､ 文字配列の理解度をテストするプログラムを書くことです｡
そこで､ 皆さんにやっていただきたいのは､ いくつもの関数を書いていただくことです｡
まず､ 文字列の文字数を数える関数を書いてほしい｡
撹拌長と似たようなものでしょうが､ 実際にはその機能を使わずに自分で実装することになります｡
そのため､ スターリングライブラリの機能を使用することはできません｡
この関数はパラメータとして文字aを受け取り､
intを返す必要があります｡
だから､ パラメータとして文字配列を用意すればいいんです｡
この課題では､ ポインターを気にする必要は全くありません｡
これは､ 変わらないので､ 多分パラメータ定数を取るだけです｡
そして､ これから行うことは､ 配列の中を繰り返し処理することです｡
つまり､ 文字列があっても､ 配列なので個々の文字にアクセスすることができるのです｡
ですから､ 個々の文字にアクセスできれば､ カウントだけしておいて､ それを表示すればいいわけです｡
この関数は､ 長さである整数を返すべきである｡
次に書いてほしいのは､ 2つの文字列を連結するconcatenate関数を実装することです｡
繰り返しになりますが､ ライブラリの関数は使わないでください､ str catは使わないでください｡
この関数は3つのパラメータ､
結果､ そして連結したい2つの文字､ 連結したい2つの文字列を受け取る必要があります｡
そのため､ それらを変更することはできないので､ 定数にすることができます｡
結果は､ 格納した文字列になるだけです｡
だから､ かなりシンプル｡ ここでも､ ポインターを扱う必要はありません｡
ループをいくつか用意して､ それぞれの配列を調べて､
結果の配列に代入するのです｡
そして､ この関数で返すべきものは何もありません｡
結果配列を渡しているので､ 何も返す必要はありません｡
これを修正してポインターを返したりすることもできますが､ 今回の課題ではそうするつもりはありません｡
つまり､ これは2つの文字列を手動で連結することになります｡
3番目に書いてほしい関数は､ 2つの文字列を比較して､ それが等しいかどうかを確認するものです｡
繰り返しになりますが､ ライブラリ関数を使うのではなく､ これらの文字配列がどのように機能するかを理解してほしいのです｡
この関数は､ 2つの定数文字配列をパラメータとして受け取り､ 真か偽のどちらかのブール値を返す必要があります｡
等しければ真､ そうでなければ偽｡
では､ 何をしなければならないかというと､
配列を繰り返し､ それぞれの文字を比較しなければならないのです｡
また､ イコール文字列のヌル終端を探すとよいでしょう｡
ヌル終端は､ 停止したいタイミングを判断することができるからです｡
なぜなら､ これらの配列のサイズは分からないので､ 2番目の文字列がいつ来るのかを判断するために､
ヌル終端記号を探す必要があるからです｡
そして､ 実際に2番目の文字列と1番目の文字列を比較する必要があります｡
だから､ どうすればいいかを考えなければならない｡ しかし､ ここでは､ 文字配列を作成して操作したり､
文字配列にアクセスして長さを決定したり､
文字配列を連結して等しいかどうかをチェックすることに慣れ親しむための3つの関数を紹介します｡
頑張ってください｡ 次回の講義で解決策を提示します｡ ありがとうございます｡