「文字列の二次元配列を作りたい、代入したい」
「文字列の初期化の方法を知りたい」
そんな疑問を持つ方に向けて解説します。
大学や本で学んだことをわかりやすくまとめました!
文字列とは
文字列とは、“Hello”や“こんにちは”など文字の並びを二重引用符「“」で囲んだものを表します。
文字列の長さは、大文字、小文字、ひらがなは関係なく、「A」も「a」も「あ」も1文字とカウントされます。
また、文字列の末尾には、ナル文字と呼ばれる値が0の文字が付随されます。
ナル文字を表記する際は、「\0」と書きます。
配列に文字列を代入する方法
文字列を格納する方法は、配列の数字を格納するときとほとんど変わりません。
要素の型 変数名 [要素数];
要素の型は、文字列では「char」。
変数名は自分で名前を決めます。
要素数は文字列の長さを決めます。
全てをまとめると、「char a[4];」などと書きます。
文字列の長さを調べるプログラムを書いて、文字列に慣れましょう。
#include <stdio.h>
int main(void)
{
char str[256];
int position=0;
int count=0;
printf("文字列を入力してください:");
gets(str);
while((str[position])!='\0'){
count++;
position++;
}
printf("文字列\"%s\"の長さは%dです\n",str,position);
return 0;
}
文字列の初期化
文字列を最初に格納する際には主に3つの方法があります。
1つ目: char a[4];
2つ目: char a[]={‘A’,’B’,’C’,’\0′};
3つ目: char a[]=”ABC”;
1つ目は変数名と文字列の長さだけ先に決めておき、後のプログラムで代入していくことになります。
その際には、a[2]=’C’; などと書きます。
2つ目、3つ目はどちらも文字列「ABC」を入れていますが、3つ目はナル文字を入力せずとも勝手に入れてくれるので便利です。
問題(発展)
今回学んだことを活かして以下の問題を解いてみましょう。
「3つの文字列を格納するchar型の2次元配列を用意して、キーボードから文字列を入力し、その文字列と文字数を画面に印字するプログラムを作成せよ。」
この答えは以下になります。
#include <stdio.h>
# define s 3
# define d 256
int str(const char t[])
{
int len=0;
while(t[len]!='\0')
len++;
return len;
}
int main(void){
char mozi[s][d];
int a,b;
for(a=0;a<3;a++){
printf("%dつめの文字列を入力してください(最大255文字):",a+1);
gets(mozi[a]);
}
for(a=0;a<3;a++){
printf("%dつめに入力された文字列は\"%s\"です. ",a+1,mozi[a]);
printf("文字数は%dです。\n",str(mozi[a]));
}
return 0;
}
文字列の二次元配列の作り方は、配列と同じで、 char 名前[要素数A][要素数B]; と書けばできます。
(多次元配列について復習したい方はこちらをご覧ください)
また、関数strの()内で「const」と書いているのは、受け取る配列の要素の値を変更しないことを宣言しています。
まとめ
今回は文字列の基本的な知識について学びました。
文字列にはナル文字という数字の配列ではないものがありますので注意しましょう。
次回は文字列の連結について解説したいと思います。