static変数の配列の初期値を空文字列にする一般的な方法
いつもお世話になっております。
static変数の配列の初期値を空文字列(各要素が'\0')にしたいです。
static変数なので放って置いても各要素に'\0'が入りますが、
初期値として空文字列にしている事を明記したいです。
そこで以下の様な方法を考えてみました。
(1)初期値に何もせず、コメントを書いておく
(2)初回起動フラグを持ち、フラグが立っていれば空文字列にする
(3)初期値にnull文字をSTR_LENの数だけ書く
(4)初期値の先頭のみnull文字にし、残りは省略する
どの様な方法が一般的でしょうか?
上記以外にもあれば、教えていただければ幸いです。
また、以下は私が考えたそれぞれの方法のソースです。
--------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#define STR_LEN 16
#define FLAG_ON (1)
#define FLAG_OFF (0)
--------------------------------------------------------------------------------
/* 初期値に何もせず、コメントを書いておく */
--------------------------------------------------------------------------------
void clear_1(void)
{
static char hoge[STR_LEN]; /* 空文字列 */
}
--------------------------------------------------------------------------------
/* 初回起動フラグを持ち、フラグが立っていれば空文字列にする */
--------------------------------------------------------------------------------
void clear_2(void)
{
static char hoge[STR_LEN];
static int first = FLAG_ON;
if(first == FLAG_ON){
strncpy(hoge, "\0", STR_LEN);
first = FLAG_OFF;
}
}
--------------------------------------------------------------------------------
/* 初期値にnull文字をSTR_LENの数だけ書く */
--------------------------------------------------------------------------------
void clear_3(void)
{
static char hoge[] = {'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
}
--------------------------------------------------------------------------------
/* 初期値の先頭のみnull文字にし、残りは省略する */
--------------------------------------------------------------------------------
void clear_4(void)
{
static char str[STR_LEN] = {'\0', };
}
--------------------------------------------------------------------------------