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;

演習

  1. 64文字以内の文字列を受け取り、逆順で表示せよ。
  2. enemyの配列を作り、適当に値を与え、、そのメンバ変数を一覧表示せよ。
  3. 64文字以内の文字列を受け取り、その中で最も多い文字の出現回数を表示せよ。