0611
文字列
Cにおいて、文字列はchar型の配列である。文字列の最後には必ず終端文字'\0'がくる。
そのため例えば、char arr[8]には8-1=7文字以下の文字列が格納できる。
char arr[16]; //15文字まで
scanf("%s", arr);
printf("%s\n", arr);
以下に代表的な文字列操作関数を示す。
char str[8] = "abcde";
char str2[8] = "1234567";
int x = strlen(str); //配列の文字列の長さを返す
printf("%d\n", x);
if (strcmp(str, str2) > 0) //文字列を大小比較する
{
printf("%s\n", str);
}
else
{
printf("%s\n", str2);
}
strncat(str, str2, 8 - 1 - x); //文字列を連結する
printf("%s\n", str);
strncpy(str, str2, 4); //文字列をコピーする
printf("%s\n", str);
x = atoi(str); //文字列を整数に変換する
printf("%d\n", x);
構造体
敵のID、座標、ステータスなどをまとめて管理したいという場合があるだろう。必要ならば、いくつかの型をまとめた新しい型を作ることができる。これが構造体である。
構造体は、次のように宣言する。
typedef struct
{
double x, y;
int ID, hp;
char name[64];
}enemy;
これで、int型などの組み込み型と同じように、「enemy」という型が使えるようになった。
enemyの中で宣言されているxやyなどの変数を、メンバ変数と呼ぶ。実際にメンバ変数にアクセスする場合は、次のようにする。
enemy teki[4];
teki[0].x = 200;
演習
- 64文字以内の文字列を受け取り、逆順で表示せよ。
- enemyの配列を作り、適当に値を与え、、そのメンバ変数を一覧表示せよ。
- 64文字以内の文字列を受け取り、その中で最も多い文字の出現回数を表示せよ。