[C言語] 数字の文字列を桁揃えする方法(左寄せ/右寄せ)

C言語で数字の文字列を桁揃えするには、printf関数を使用します。

右寄せの場合、%ndの形式指定子を使い、nに表示する桁数を指定します。

例えば、printf("%5d", 42);42 を5桁分のスペースに右寄せします。

左寄せの場合は、%-ndの形式指定子を使います。

例えば、printf("%-5d", 42);42 を5桁分のスペースに左寄せします。

この記事でわかること
  • printf関数を使った桁揃えの方法
  • 整数や小数の右寄せと左寄せ
  • ゼロ埋めとスペース埋めの使い分け
  • 文字列を整列させる技術
  • 複数の値を同時に表示する方法

目次から探す

printf関数を使った桁揃え

printf関数の基本的な使い方

C言語におけるprintf関数は、フォーマットされた出力を行うための関数です。

基本的な構文は以下の通りです。

#include <stdio.h>
int main() {
    printf("出力したい文字列\n"); // 文字列を出力
    return 0;
}

この関数を使用することで、数値や文字列を整形して表示することができます。

フォーマット指定子を使うことで、出力の形式を細かく制御できます。

右寄せの実装方法

右寄せを実現するためには、フォーマット指定子に幅を指定します。

以下のコードは、整数を右寄せで表示する例です。

#include <stdio.h>
int main() {
    int number = 42;
    printf("%5d\n", number); // 5桁の幅で右寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

42

左寄せの実装方法

左寄せを行うには、フォーマット指定子の前にマイナス記号を付けます。

以下は、整数を左寄せで表示する例です。

#include <stdio.h>
int main() {
    int number = 42;
    printf("%-5d\n", number); // 5桁の幅で左寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

42

桁数指定の方法

桁数を指定することで、出力の幅を柔軟に調整できます。

以下のコードは、小数点以下の桁数を指定して表示する例です。

#include <stdio.h>
int main() {
    double value = 3.14159;
    printf("%.2f\n", value); // 小数点以下2桁で表示
    return 0;
}

このコードを実行すると、出力は次のようになります。

3.14

数字以外のデータ型での桁揃え

桁揃えは数字だけでなく、文字列にも適用できます。

以下のコードは、文字列を右寄せで表示する例です。

#include <stdio.h>
int main() {
    char* text = "Hello";
    printf("%10s\n", text); // 10桁の幅で右寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

Hello

このように、printf関数を使うことで、さまざまなデータ型の出力を桁揃えすることができます。

右寄せの具体例

整数の右寄せ

整数を右寄せで表示するには、printf関数のフォーマット指定子に幅を指定します。

以下のコードは、整数を右寄せで表示する例です。

#include <stdio.h>
int main() {
    int number1 = 5;
    int number2 = 123;
    int number3 = 4567;
    
    printf("%5d\n", number1); // 5桁の幅で右寄せ
    printf("%5d\n", number2); // 5桁の幅で右寄せ
    printf("%5d\n", number3); // 5桁の幅で右寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

    5
  123
 4567

小数点付きの数値の右寄せ

小数点付きの数値も同様に右寄せで表示できます。

以下のコードは、小数点以下2桁で右寄せする例です。

#include <stdio.h>
int main() {
    double value1 = 3.1;
    double value2 = 2.71828;
    double value3 = 1.414;
    
    printf("%8.2f\n", value1); // 8桁の幅で右寄せ、小数点以下2桁
    printf("%8.2f\n", value2); // 8桁の幅で右寄せ、小数点以下2桁
    printf("%8.2f\n", value3); // 8桁の幅で右寄せ、小数点以下2桁
    return 0;
}

このコードを実行すると、出力は次のようになります。

  3.10
  2.72
  1.41

文字列の右寄せ

文字列も右寄せで表示することができます。

以下のコードは、文字列を右寄せで表示する例です。

#include <stdio.h>
int main() {
    char* text1 = "Hi";
    char* text2 = "Hello";
    char* text3 = "World";
    
    printf("%10s\n", text1); // 10桁の幅で右寄せ
    printf("%10s\n", text2); // 10桁の幅で右寄せ
    printf("%10s\n", text3); // 10桁の幅で右寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

        Hi
     Hello
     World

右寄せの際のゼロ埋め

右寄せの際に、空白の代わりにゼロで埋めることも可能です。

ゼロ埋めを行うには、フォーマット指定子の前にゼロを付けます。

以下のコードは、整数をゼロ埋めで右寄せする例です。

#include <stdio.h>
int main() {
    int number1 = 5;
    int number2 = 123;
    int number3 = 4567;
    
    printf("%05d\n", number1); // 5桁の幅でゼロ埋め
    printf("%05d\n", number2); // 5桁の幅でゼロ埋め
    printf("%05d\n", number3); // 5桁の幅でゼロ埋め
    return 0;
}

このコードを実行すると、出力は次のようになります。

00005
00123
04567

このように、右寄せの際にゼロ埋めを使用することで、数値を整然と表示することができます。

左寄せの具体例

整数の左寄せ

整数を左寄せで表示するには、printf関数のフォーマット指定子にマイナス記号を付けて幅を指定します。

以下のコードは、整数を左寄せで表示する例です。

#include <stdio.h>
int main() {
    int number1 = 5;
    int number2 = 123;
    int number3 = 4567;
    
    printf("%-5d\n", number1); // 5桁の幅で左寄せ
    printf("%-5d\n", number2); // 5桁の幅で左寄せ
    printf("%-5d\n", number3); // 5桁の幅で左寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

5    
123  
4567

小数点付きの数値の左寄せ

小数点付きの数値も左寄せで表示できます。

以下のコードは、小数点以下2桁で左寄せする例です。

#include <stdio.h>
int main() {
    double value1 = 3.1;
    double value2 = 2.71828;
    double value3 = 1.414;
    
    printf("%-8.2f\n", value1); // 8桁の幅で左寄せ、小数点以下2桁
    printf("%-8.2f\n", value2); // 8桁の幅で左寄せ、小数点以下2桁
    printf("%-8.2f\n", value3); // 8桁の幅で左寄せ、小数点以下2桁
    return 0;
}

このコードを実行すると、出力は次のようになります。

3.10    
2.72    
1.41

文字列の左寄せ

文字列も左寄せで表示することができます。

以下のコードは、文字列を左寄せで表示する例です。

#include <stdio.h>
int main() {
    char* text1 = "Hi";
    char* text2 = "Hello";
    char* text3 = "World";
    
    printf("%-10s\n", text1); // 10桁の幅で左寄せ
    printf("%-10s\n", text2); // 10桁の幅で左寄せ
    printf("%-10s\n", text3); // 10桁の幅で左寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

Hi        
Hello     
World

左寄せの際のスペース埋め

左寄せの際に、出力の幅を確保するためにスペースで埋めることができます。

以下のコードは、整数を左寄せで表示する例です。

#include <stdio.h>
int main() {
    int number1 = 5;
    int number2 = 123;
    int number3 = 4567;
    
    printf("%-5d\n", number1); // 5桁の幅で左寄せ
    printf("%-5d\n", number2); // 5桁の幅で左寄せ
    printf("%-5d\n", number3); // 5桁の幅で左寄せ
    return 0;
}

このコードを実行すると、出力は次のようになります。

5    
123  
4567

このように、左寄せを使用することで、数値や文字列を整然と表示することができます。

スペースで埋めることで、視覚的に整った出力を得ることができます。

応用例

フォーマット指定子を使った複数の値の桁揃え

printf関数を使用して、複数の値を同時に桁揃えして表示することができます。

以下のコードは、整数と小数を混在させて表示する例です。

#include <stdio.h>
int main() {
    int number = 42;
    double value = 3.14159;
    
    printf("%-10d %-10.2f\n", number, value); // 整数と小数を左寄せで表示
    return 0;
}

このコードを実行すると、出力は次のようになります。

42         3.14

動的に桁数を指定する方法

桁数を動的に指定することも可能です。

以下のコードは、変数を使って桁数を指定する例です。

#include <stdio.h>
int main() {
    int width = 8;
    int number = 123;
    
    printf("%*d\n", width, number); // 動的に幅を指定
    return 0;
}

このコードを実行すると、出力は次のようになります。

123

桁揃えを使った表形式の出力

桁揃えを利用して、表形式でデータを整然と表示することができます。

以下のコードは、整数と小数を表形式で表示する例です。

#include <stdio.h>
int main() {
    printf("%-10s %-10s\n", "整数", "小数"); // ヘッダー
    printf("%-10d %-10.2f\n", 1, 3.14);
    printf("%-10d %-10.2f\n", 2, 2.71);
    printf("%-10d %-10.2f\n", 3, 1.41);
    return 0;
}

このコードを実行すると、出力は次のようになります。

整数       小数      
1          3.14      
2          2.71      
3          1.41

ゼロ埋めとスペース埋めの使い分け

ゼロ埋めとスペース埋めを使い分けることで、出力の見た目を調整できます。

以下のコードは、同じ数値をゼロ埋めとスペース埋めで表示する例です。

#include <stdio.h>
int main() {
    int number = 42;
    
    printf("ゼロ埋め: %05d\n", number); // ゼロ埋め
    printf("スペース埋め: %5d\n", number); // スペース埋め
    return 0;
}

このコードを実行すると、出力は次のようになります。

ゼロ埋め: 00042
スペース埋め:    42

桁揃えを使った数値の整列表示

桁揃えを使用して、数値を整列させることができます。

以下のコードは、複数の数値を整列して表示する例です。

#include <stdio.h>
int main() {
    int numbers[] = {1, 23, 456, 7890};
    
    for (int i = 0; i < 4; i++) {
        printf("%-5d", numbers[i]); // 左寄せで整列
    }
    printf("\n");
    return 0;
}

このコードを実行すると、出力は次のようになります。

1    23   456  7890

このように、桁揃えを活用することで、データを見やすく整然と表示することができます。

よくある質問

左寄せと右寄せを同時に使うことはできる?

C言語のprintf関数では、同じ行で左寄せと右寄せを同時に使用することが可能です。

具体的には、異なるフォーマット指定子を使って、左寄せの値と右寄せの値を同時に表示できます。

以下のように、左寄せの指定子と右寄せの指定子を組み合わせて使用します。

#include <stdio.h>
int main() {
    int leftValue = 42;
    int rightValue = 1234;
    
    printf("%-10d %10d\n", leftValue, rightValue); // 左寄せと右寄せを同時に使用
    return 0;
}

このコードを実行すると、左寄せの整数と右寄せの整数が同じ行に表示されます。

桁揃えの際にゼロ埋めとスペース埋めの違いは?

ゼロ埋めとスペース埋めは、出力の見た目を調整するための方法ですが、主に以下の違いがあります。

  • ゼロ埋め: 数値の前にゼロを追加して桁数を満たします。

例えば、%05dと指定すると、5桁の幅で不足分をゼロで埋めます。

  • スペース埋め: 数値の前にスペースを追加して桁数を満たします。

例えば、%5dと指定すると、5桁の幅で不足分をスペースで埋めます。

このように、ゼロ埋めは数値を強調したい場合に便利で、スペース埋めは視覚的に整った出力を得るために使用されます。

桁揃えを使って文字列を整列させる方法は?

文字列を整列させるには、printf関数のフォーマット指定子を使用して、幅を指定し、左寄せまたは右寄せを行います。

以下の方法で文字列を整列させることができます。

  1. 左寄せ: %sの前にマイナス記号を付けて幅を指定します。

例: %-10s

  1. 右寄せ: %sの前に幅を指定します。

例: %10s

以下のコードは、文字列を整列させる例です。

#include <stdio.h>
int main() {
    char* text1 = "Apple";
    char* text2 = "Banana";
    char* text3 = "Cherry";
    
    printf("%-10s %-10s %-10s\n", text1, text2, text3); // 左寄せで整列
    return 0;
}

このコードを実行すると、出力は次のようになります。

Apple     Banana    Cherry

このように、桁揃えを使うことで文字列を整然と表示することができます。

まとめ

この記事では、C言語における数字や文字列の桁揃えの方法について詳しく解説しました。

具体的には、printf関数を使用した右寄せや左寄せの実装方法、桁数の指定、さらにはゼロ埋めやスペース埋めの使い分けについても触れました。

これらの技術を活用することで、出力をより見やすく整然とした形で表示することが可能になります。

ぜひ、実際のプログラムにこれらのテクニックを取り入れて、出力のフォーマットを改善してみてください。

  • URLをコピーしました!
目次から探す