TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜36時限目〜 文字列配列の配列・・・・

〜目次〜

 

 

文字列配列の配列

文字列をさらに高度に使っていきます。

プログラムの中では、

複数の文字列をまとめて配列で扱えると、

便利になる場合があります。

文字列自体がchar型の配列であることから、

二次元の配列として扱うことができます。

実際に以下のコードを入力してみてみます。

sample79.c

f:id:YuyaTerayama:20180911205907p:plainーsample79の実行画面ー

文字列はHelloです。

文字列はThankyouです。

文字列はSorryです。

3つの文字列を配列としたものです。

C言語の多次元配列は、

内部的に配列の各要素が配列となった仕組みです。

つまり、

str[0]、str[1]、str[2]のそれぞれが、

素数20の配列となっているという、

イメージをすることができます。

 

文字列ポインタの配列

文字列はポインタでも扱えるということは、

すでに学びました。

ポインタを配列としたコードを作成することもできます。

実際に以下のコードを入力してみてください。

sample80.c

f:id:YuyaTerayama:20180911210339p:plainーsample80の実行画面ー

文字列はHelloです。

文字列はThankyouです。

文字列はSorryです。

実行画面をわかる通り、

ポインタで扱った文字列を配列にしたものですが、

結果は全く同じになります。

 

標準ライブラリ関数を使う

C言語の開発環境には、

標準ライブラリ関数(standard library)

が組み込まれているのはすでに学びました。

標準ライブラリ関数には、

文字列を扱う関数が多く含まれています。

これらの関数をコードの中で利用することで、

文字列の操作を簡単に行うことができます。

標準ライブラリの主な文字列操作関数について、

以下にまとめます。

f:id:YuyaTerayama:20180911211747p:plain

文字列操作関数を使うときには、

string.h

というファイルをインクルードします。

 

文字列の長さを調べる

strlen( )関数

を使って、文字列の長さを調べるコードを入力してみます。

sample81.c

f:id:YuyaTerayama:20180911212148p:plainーsample81の実行画面ー

文字列を入力してください。

Hello

文字列の長さは5です。

strlen( )関数は文字列の長さを調べる関数です。

長さをあらわす戻り値によって、

文字列の長さを出力するコードが作成できます。

尚、strlen( )関数で返される文字列の長さには、

¥0を含まない、文字だけの個数になります。

 

文字列を配列にコピーする

文字列を配列にコピーする関数を使ってみます。

文字列を配列で扱う場合には" "で初期化をすることができます。

しかし、

初期化以外の場所では、

文字を1文字ずつ配列に格納しなくてはいけないため、

面倒な作業になります。

そんなときに、

文字列を配列に一度にコピーできる、

標準ライブラリの、

strcpy( )関数

を使うことで便利になります。

実際にstrcpy( )関数を使ってみます。

sample82.c

f:id:YuyaTerayama:20180911212954p:plainーsample82の実行画面ー

配列str1はHelloです。

配列str2はThankyouです。

この関数を使うことで、

配列に文字列を簡単に格納できるので便利です。

 

文字列を連結する

文字列の末尾に文字列を追加するという処理を行う、

strcat( )関数

を使ってみます。

sample83.c

f:id:YuyaTerayama:20180911213645p:plain

ーsample83の実行画面ー

配列str1はHelloです。

配列str2はThankyouです。

連結するとHelloThankyouです。

strcat( )関数を使うことで、

末尾に文字列を追加することができました。

 

配列の大きさに注意をする

strcpy( )関数やstrcat( )関数を使う際には、

配列の大きさに十分注意してください。

関数の引数がさす配列の大きさが十分でないと、

これらの関数は配列の要素を超えて文字列をコピーしてしまいます。

配列の要素を超えて要素を扱うような、

操作を行なってはいけません。

コンパイルは問題なくできるのですが、

実行時に予期せぬエラーになります。

特にstrcap( )関数では末尾に追加するので、

超えてしまう場合が多いので注意してください。

 

次回は残っている、文字列の比較であるstrcmp( )関数から

学んでいきます。

 

〜END〜