【C言語】文字列を0埋めする2つの方法(sprintf関数・memset関数)

この記事では、C言語で文字列を0埋めする方法について解説します。

sprintf関数memset関数、自作関数を使って、文字列を特定の桁数になるように0で埋める方法を学ぶことができます。

初心者の方にもわかりやすく説明していきますので、ぜひ参考にしてください。

目次から探す

C言語における文字列の0埋め方法

C言語では、文字列を特定の桁数になるように0で埋めることができます。

文字列の0埋めは、主に数値の表示やフォーマットに使用されます。

以下では、C言語における文字列の0埋め方法について説明します。

sprintf関数を使った方法

sprintf関数は、指定した書式に従って文字列を生成するための関数です。

文字列の0埋めには、書式指定子 %0 を使用します。

以下に、sprintf関数を使った文字列の0埋めの例を示します。


#include <stdio.h>
int main() {
    int num = 42;
    char str[10];
    sprintf(str, "%04d", num);
    printf("0埋め後の文字列: %s\n", str);
    return 0;
}

上記のコードでは、変数 num の値を4桁の0埋めした文字列に変換しています。

sprintf関数の第1引数には、変換結果を格納する文字列の配列を指定し、第2引数には書式指定子 %04d を指定しています。

%04d は、整数を4桁の0埋めした文字列に変換することを意味します。

実行結果は以下のようになります。

0埋め後の文字列: 0042

memset関数を使った方法

memset関数は、指定した範囲のメモリを特定の値で埋めるための関数です。

文字列の0埋めには、memset関数を使用して文字列の各要素を0に設定します。

以下に、memset関数を使った文字列の0埋めの例を示します。


#include <stdio.h>
#include <string.h>
int main() {
    char str[10];
    memset(str, '0', sizeof(str) - 1);
    str[sizeof(str) - 1] = '\0';
    printf("0埋め後の文字列: %s\n", str);
    return 0;
}

上記のコードでは、文字列 str の各要素を文字 '0' で埋めています。

memset関数の第1引数には、埋める対象のメモリの先頭アドレスを指定し、第2引数には埋める値を指定します。

第3引数には、埋める範囲のバイト数を指定します。

また、最後に文字列の終端を示す '\0' を設定しています。

実行結果は以下のようになります。

0埋め後の文字列: 0000000000

自作関数を作る方法

自作関数を作る方法では、文字列の各要素を直接操作して0で埋める関数を作成します。

以下に、自作関数を使った文字列の0埋めの例を示します。


#include <stdio.h>
void zeroPadding(char* str, int length) {
    int i;
    for (i = 0; i < length; i++) {
        str[i] = '0';
    }
    str[length] = '\0';
}
int main() {
    char str[10];
    zeroPadding(str, sizeof(str) - 1);
    printf("0埋め後の文字列: %s\n", str);
    return 0;
}

上記のコードでは、自作関数 zeroPadding を定義しています。

この関数は、引数として文字列の先頭アドレスと文字列の長さを受け取り、文字列を0で埋めます。

forループを使用して、文字列の各要素を文字 '0' で埋めています。

最後に、文字列の終端を示す '\0' を設定しています。

実行結果は以下のようになります。

0埋め後の文字列: 0000000000

以上が、C言語における文字列の0埋め方法の説明です。

sprintf関数memset関数、自作関数を使って、文字列を0埋めすることができます。

適切な方法を選んで、プログラムに組み込んでみてください。

目次から探す