どうも、ちょげ(@chogetarou)です。
配列(array)を空文字で初期化する方法を紹介します。
方法

配列(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));
コメント