Project_OKI’s diary

エンジニアの勉強ブログ

C言語基礎知識49(配列と文字列2,ポインタによる指定)

 

1.目的

目次

 

2.配列に文字列を格納する。

const 型名 変数名1[] ="文字列"
const 型名 変数名2[] ="文字列"
const 型名 変数名3[] ="文字列"

const 型名 *const 変数名 [] = {
    変数名1,
    変数名2,
    変数名3
    ・・・
}
例:
const char st1[] = "TEST1";
const char st2[] = "TEST4";
const char st3[] = "TEST8";
const char st4[] = "TEST10";

const char *const am1[] = {
    st1,
    st2,
};

const char *const am2[] = {
    st3,
    st4,
};
 

3.プログラムの作成(文字列の出力確認)

#include <stdio.h>

#define Elm(d)  sizeof(d)/sizeof(d[0])  ///<要素数の算出

///配列の宣言
const char st1[] = "TEST1";
const char st2[] = "TEST4";
const char st3[] = "TEST8";
const char st4[] = "TEST10";
const char st5[] = "TEST12";

const char *const am1[] = {
    st1,
    st2,
};

const char *const am2[] = {
    st3,
    st4,
    st5,
};

int main(void) {
    int elm1,elm2;
    int i;
    
    elm1 = Elm(am1);
    elm2 = Elm(am2);
    
    for(i=0;i<elm1;i++){
        printf("am1:%s\n",am1[i]);
    }
    
    for(i=0;i<elm2;i++){
        printf("am2:%s\n",am2[i]);
    }
    
    return 0;
}

実行結果:https://paiza.io/projects/uUSZM99BaFXJGlUuvEIu0A?language=c

 

4.プログラムの作成(文字列の出力:複数文字列の参照)

#include <stdio.h>

#define Elm(d)  sizeof(d)/sizeof(d[0])  ///<要素数の算出

///配列の宣言
const char st1[] = "TEST1";
const char st2[] = "TEST4";
const char st3[] = "TEST8";
const char st4[] = "TEST10";
const char st5[] = "TEST12";

const char *const am1[] = {
    st1,
    st2,
};

const char *const am2[] = {
    st3,
    st4,
    st5,
};


const char *const *const st_t[] = {
    am1,
    am2,
};

int main(void) {
    int elm1,elm2;                  ///<elm1,2の要素数
    int elmSum[2];                   ///<elm1,2の要素数を格納するための配列
    int stelm;                      ///<st_elmの要素数
    int i,j;                        ///<カウント用変数
    
    ///要素数の算出
    elm1 = Elm(am1);
    elm2 = Elm(am2);
    stelm = Elm(st_t);

    ///配列に要素数を格納
    elmSum[0] = elm1;
    elmSum[1] = elm2;
    
    for(i=0;i<stelm;i++){
        for(j=0;j<elmSum[i];j++){
            printf("st_t:%s\n",st_t[i][j]);
        }
    }
    return 0;
}

実行結果:https://paiza.io/projects/YwXs3Mo0s2GwtH-LszYvDw?language=c

 

・下記記事と同じく2重配列によって、出力する文字列を選択することが出来る。

C言語基礎知識48(配列と文字列) - Project_OKI’s diary

const char *const *const st_t[]

→配列の先をconst(定数)ポインタとして、参照する。 

 参照先も、constのポインタになっている為、*constを2つ重ねることで、am1,am2を指定することが出来る。

 

 

配列関連

C言語基礎知識3(配列) - Project_OKI’s diary

C言語基礎知識40(配列の要素数算出) - Project_OKI’s diary

 

文字列関連

C言語基礎知識25(文字列を数値に変換) - Project_OKI’s diary

C言語基礎知識26(構造体の配列) - Project_OKI’s diary

C言語基礎知識30(数値を文字列に変換) - Project_OKI’s diary

C言語基礎知識32(C言語で変数へ文字列をコピーする方法) - Project_OKI’s diary

C言語基礎知識33(C言語で変数へ文字列を追加する方法) - Project_OKI’s diary

C言語基礎知識48(配列と文字列) - Project_OKI’s diary

 

 

組み込みC言語