C言語基礎|puts関数による表示

puts関数とは何か

これまでの章では、画面への表示に主に printf 関数を使ってきました。
printf はとても高機能ですが、実は 文字列を表示するだけ であれば、
もっとシンプルに使える関数があります。

それが puts 関数 です。

puts の末尾の s は、
string(文字列)
に由来しています。

一般に puts は
プットエス
などと発音されます。

puts関数の役割

puts 関数は、

  • 指定した文字列を表示する。
  • 表示のあとに自動で改行する。

という、とてもシンプルな表示専用の関数 です。

puts("表示したい文字列");

この1行で、
文字列の表示と改行が同時に行われます。

まずは全体のプログラムを見てみよう

変数とキーボード入力を利用して、
二つの整数を読み込み、その和を表示する
プログラムを作ってみましょう。

プロジェクト名:chap1-12-1 ソースファイル名:chap1-12-1.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 読み込んだ二つの整数の合計を表示

#include <stdio.h>

int main(void)
{
    int a, b;

    puts("二つの整数を入力してください。");
    printf("1つ目の整数 : "); scanf("%d", &a);
    printf("2つ目の整数 : "); scanf("%d", &b);

    printf("合計は%dです。\n", a + b);

    return 0;
}

実行例

二つの整数を入力してください。
1つ目の整数 : 12
2つ目の整数 : 8
合計は20です。

最初の案内メッセージの表示に、
puts 関数が使われている点に注目してください。

puts関数の特徴を整理しよう

puts 関数と printf 関数の違いを、表で整理してみましょう。

項目putsprintf
表示できる内容文字列のみ文字列・数値
書式指定不可可能
改行自動で行う明示的に指定
実引数の数1個複数可

この表が示しているのは、
puts は単純表示、printf は高機能表示
という役割分担です。

puts と printf の違いをコードで比較

次の2行は、ほぼ同じ表示結果になります。

printf("ABCDE\n");
puts("ABCDE");

違いは、
改行文字 \n を 自分で書くか、書かなくてよいか
という点です。

puts関数が向いている場面

puts 関数は、次のような場面で特に便利です。

  • 案内メッセージを表示したいとき
  • 書式指定や数値表示が不要なとき
  • 必ず改行したいとき
puts("処理を開始します。");

このような用途では、
printf よりも 簡潔で読みやすい プログラムになります。

計算結果を変数に保存してから表示する

次は、
計算結果を一度変数に保存してから表示する例を見てみましょう。

プロジェクト名:chap1-12-2 ソースファイル名:chap1-12-2.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 合計を変数に保存してから表示

#include <stdio.h>

int main(void)
{
    int x, y;

    puts("二つの整数を入力してください。");
    printf("整数x : "); scanf("%d", &x);
    printf("整数y : "); scanf("%d", &y);

    int sum = x + y;   // xとyの和で初期化

    printf("合計は%dです。\n", sum);
    printf("つまり x + y = %d です。\n", sum);

    return 0;
}

実行例

二つの整数を入力してください。
整数x : 10
整数y : 25
合計は35です。
つまり x + y = 35 です。

同じ計算結果を複数回使う場合は、
このように 変数に保存する書き方 が分かりやすくなります。

宣言と文は混在できる

このプログラムでは、

int sum = x + y;

のように、
処理の途中で変数を宣言 しています。

C言語では、
{ } の中であれば、
宣言と文を混在させて記述できます。

同じ計算を何度も書く場合との比較

次のように書くことも可能ですが、

printf("合計は%dです。\n", x + y);
printf("つまり x + y = %d です。\n", x + y);

同じ計算を繰り返すことになります。

  • 読みにくくなる。
  • 計算が複雑になると修正しづらい。

そのため、
結果は変数に保存する
という考え方が大切になります。

ここで押さえておきたいポイント

ポイント内容
puts文字列表示専用の関数
改行自動で行われる
書式指定できない
使い分けputsは案内表示、printfは数値表示

puts と printf を
目的に応じて使い分ける
ことで、読みやすいプログラムになります。

演習問題

演習 1-7

puts 関数を使って、
次の3行を表示するプログラムを作成せよ。

挑戦
成長
継続

解答例

プロジェクト名:chap1-12-3 ソースファイル名:chap1-12-3.c

// puts関数で三つの言葉を表示

#include <stdio.h>

int main(void)
{
    puts("挑戦");
    puts("成長");
    puts("継続");

    return 0;
}

演習 1-8

キーボードから二つの整数を読み込み、
その 積(掛け算の結果) を表示するプログラムを作成せよ。

解答例

プロジェクト名:chap1-12-4 ソースファイル名:chap1-12-4.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 二つの整数の積を表示

#include <stdio.h>

int main(void)
{
    int a, b;

    puts("二つの整数を入力してください。");
    printf("整数a : "); scanf("%d", &a);
    printf("整数b : "); scanf("%d", &b);

    printf("それらの積は%dです。\n", a * b);

    return 0;
}

演習 1-9

キーボードから三つの整数を読み込み、
その を表示するプログラムを作成せよ。

解答例

プロジェクト名:chap1-12-5 ソースファイル名:chap1-12-5.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 三つの整数の和を表示

#include <stdio.h>

int main(void)
{
    int a, b, c;

    puts("三つの整数を入力してください。");
    printf("整数a : "); scanf("%d", &a);
    printf("整数b : "); scanf("%d", &b);
    printf("整数c : "); scanf("%d", &c);

    printf("それらの和は%dです。\n", a + b + c);

    return 0;
}