1.目的
- C言語で色々な配列に文字列を格納し、使用する方法について記載する。
-
・C言語基礎知識48(配列と文字列) - Project_OKI’s diaryと別の方法で使用する方法について。
目次
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言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary
・知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary