[C言語]配列を空文字で初期化するには?

C言語

どうも、ちょげ(@chogetarou)です。

配列(array)を空文字で初期化する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(array)を空文字で初期化する方法は、3つあります。

{}

1つ目は、{]を使う方法です。

まず、要素数を指定した配列を宣言します。

そして、宣言した配列に「{'\0'}」を代入します。

//myArray=配列名, length=要素数
char myArray[length] = { '\0' };

上記の代入は、配列を空文字で初期化します。

使用例

#include <stdio.h>

int main(void){
    char myArray[5] = { '\0' };
    
    int n = sizeof(myArray) / sizeof(myArray[0]);
    for (int i = 0; i < n; i++) {
        printf("[%c],", myArray[i]);
    }
    
    return 0;
}
出力:
[],[],[],[],[],

strncpy()

2つ目は、strncpy()を使う方法です。

まず、[]内に要素数を指定した配列の変数を宣言します。

次に、strncpy()を呼び出します。

strncpy()の第1引数に宣言した配列、第2引数に空文字(「””」)、第3引数にsizeof()を指定します。

そして、sizeof()の引数に、宣言した配列を指定します。

//myArray=配列名, length=要素数
char myArray[length];
strncpy(myArray, "", sizeof(myArray));

上記のstrncpy()は、配列を空文字で初期化します。

使用例

#include <stdio.h>

int main(void){
    char myArray[5];
    strncpy(myArray, "", sizeof(myArray));
    
    int n = sizeof(myArray) / sizeof(myArray[0]);
    for (int i = 0; i < n; i++) {
        printf("[%c],", myArray[i]);
    }
    
    return 0;
}
出力:
[],[],[],[],[],

memset()

3つ目は、memset()を使う方法です。

まず、[]内に要素数を指定した配列の変数を宣言します。

次に、memset()を呼び出します。

memset()の第1引数に宣言した配列、第2引数に空文字(「””」もしくは「’\0’」)、第3引数にsizeof()を指定します。

そして、sizeof()の引数に、宣言した配列を指定します。

//myArray=配列名, length=要素数
char myArray[length];
memset(myArray, '\0', sizeof(myArray));
//「""」で初期化する場合
char myArray[length];
memset(myArray, "", sizeof(myArray));

上記のmemset()は、配列を空文字で初期化します。

使用例

#include <stdio.h>

int main(void){
    char myArray[5];
    memset(myArray, '\0', sizeof(myArray));
    
    int n = sizeof(myArray) / sizeof(myArray[0]);
    for (int i = 0; i < n; i++) {
        printf("[%c],", myArray[i]);
    }
    
    return 0;
}
出力:
[],[],[],[],[],

まとめ

配列(array)を空文字で初期化する方法は、次の3つです。

  • {}を使う方法
    char myArray[length] = { '\0' };
  • strncpy()を使う方法
    char myArray[length];
    strncpy(myArray, "", sizeof(myArray));
  • memset()を使う方法
    char myArray[length];
    memset(myArray, '\0', sizeof(myArray));

コメント

タイトルとURLをコピーしました