*C言語* 〜36時限目〜 文字列配列の配列・・・・
〜目次〜
文字列配列の配列
文字列をさらに高度に使っていきます。
プログラムの中では、
複数の文字列をまとめて配列で扱えると、
便利になる場合があります。
文字列自体がchar型の配列であることから、
二次元の配列として扱うことができます。
実際に以下のコードを入力してみてみます。
sample79.c
ーsample79の実行画面ー
文字列はHelloです。
文字列はThankyouです。
文字列はSorryです。
3つの文字列を配列としたものです。
C言語の多次元配列は、
内部的に配列の各要素が配列となった仕組みです。
つまり、
str[0]、str[1]、str[2]のそれぞれが、
要素数20の配列となっているという、
イメージをすることができます。
文字列ポインタの配列
文字列はポインタでも扱えるということは、
すでに学びました。
ポインタを配列としたコードを作成することもできます。
実際に以下のコードを入力してみてください。
sample80.c
ーsample80の実行画面ー
文字列はHelloです。
文字列はThankyouです。
文字列はSorryです。
実行画面をわかる通り、
ポインタで扱った文字列を配列にしたものですが、
結果は全く同じになります。
標準ライブラリ関数を使う
C言語の開発環境には、
標準ライブラリ関数(standard library)
が組み込まれているのはすでに学びました。
標準ライブラリ関数には、
文字列を扱う関数が多く含まれています。
これらの関数をコードの中で利用することで、
文字列の操作を簡単に行うことができます。
標準ライブラリの主な文字列操作関数について、
以下にまとめます。
文字列操作関数を使うときには、
string.h
というファイルをインクルードします。
文字列の長さを調べる
strlen( )関数
を使って、文字列の長さを調べるコードを入力してみます。
sample81.c
ーsample81の実行画面ー
文字列を入力してください。
Hello
文字列の長さは5です。
strlen( )関数は文字列の長さを調べる関数です。
長さをあらわす戻り値によって、
文字列の長さを出力するコードが作成できます。
尚、strlen( )関数で返される文字列の長さには、
¥0を含まない、文字だけの個数になります。
文字列を配列にコピーする
文字列を配列にコピーする関数を使ってみます。
文字列を配列で扱う場合には" "で初期化をすることができます。
しかし、
初期化以外の場所では、
文字を1文字ずつ配列に格納しなくてはいけないため、
面倒な作業になります。
そんなときに、
文字列を配列に一度にコピーできる、
標準ライブラリの、
strcpy( )関数
を使うことで便利になります。
実際にstrcpy( )関数を使ってみます。
sample82.c
ーsample82の実行画面ー
配列str1はHelloです。
配列str2はThankyouです。
この関数を使うことで、
配列に文字列を簡単に格納できるので便利です。
文字列を連結する
文字列の末尾に文字列を追加するという処理を行う、
strcat( )関数
を使ってみます。
sample83.c
ーsample83の実行画面ー
配列str1はHelloです。
配列str2はThankyouです。
連結するとHelloThankyouです。
strcat( )関数を使うことで、
末尾に文字列を追加することができました。
配列の大きさに注意をする
strcpy( )関数やstrcat( )関数を使う際には、
配列の大きさに十分注意してください。
関数の引数がさす配列の大きさが十分でないと、
これらの関数は配列の要素を超えて文字列をコピーしてしまいます。
配列の要素を超えて要素を扱うような、
操作を行なってはいけません。
コンパイルは問題なくできるのですが、
実行時に予期せぬエラーになります。
特にstrcap( )関数では末尾に追加するので、
超えてしまう場合が多いので注意してください。
次回は残っている、文字列の比較であるstrcmp( )関数から
学んでいきます。
〜END〜