2015年1月31日土曜日

[C言語]多次元配列のサンプル

今まで多次元配列があいまいな理解だったため整理してみた。
※間違っている部分はコメントください。





サンプル
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// ASCIIトランプ
// ハートの1
const char *_H01[]={
    "=======",
    "|      H      |",
    "|   HH      |",
    "|      H      |",
    "|  HHH    |",
    "=======",
    NULL,
};
// ハートの2
const char *_H02[]={
    "=======",
    "|      H      |",
    "| H     H   |",
    "|      H      |",
    "|HHHHH|",
    "=======",
    NULL,
};

enum msg {H01, H02};
// char **cards[]={ _H01,_H02, }; // でもOK(Warningがでるかも)
void *cards[]={ _H01,_H02, };

// 配列内の文字列をカウント
// 引数 ary[]:文字列格納ポインタ
// 戻り値    :文字列の個数
int arycount(char *ary[]){
    int i;
    for(i=0;ary[i]!=NULL;i++);        // NULLが検出されるまで
    return i;
}

// 文字列配列内の文字列を表示
// 引数       :文字列格納ポインタ
//            :文字列の個数
void strprint(char *ary[], int w){
    int  i;
    for(i=0;i<w;i++){
        printf("%s\n",*(ary+i));
    }
}

int main (void){
    int i,m;
    m=arycount(cards[H02]);
    strprint(cards[H02], m);
    return 0;

}

0 件のコメント:

コメントを投稿