【C言語入門】条件で繰り返すwhileループ!do-whileとの違いも解説

C言語の繰り返し処理といえば for ループが代表的ですが、「繰り返す回数が決まっていない」場合には while ループが非常に役立ちます。例えば、「ユーザーが特定の文字を入力するまで」や「ファイルの終端に達するまで」といった処理に最適です。

この記事では、while ループの基本的な使い方から、よく使われる実践的なパターン、そして do-while ループとの違いまでを分かりやすく解説します。


目次

while ループの基本

while ループは、指定された条件式が真(true)である間、ブロック {} 内の処理を繰り返し実行します。

基本構文:

while (条件式) {
    // 条件式が真の間、繰り返される処理
}

ループに入る前にまず条件式が評価され、真であれば処理が実行されます。処理が一通り終わると、再び条件式が評価され…という流れを、条件式が偽(false)になるまで続けます。

サンプルコード

0から4までの数値を表示するプログラムです。for ループでも書けますが、while の仕組みを理解するのに最適な例です。

#include <stdio.h>

int main(void) {
    int count = 0;

    // countが5未満の間、ループを続ける
    while (count < 5) {
        printf("%d\n", count);
        count++; // countを1増やす(この行がないと無限ループになる)
    }

    printf("ループが終了しました。\n");
    return 0;
}

count++ で毎回値を更新し、いずれ count < 5 が偽になるようにすることが重要です。


無限ループと break

while(1) のように、条件式に常に真となる値を指定すると、無限ループを作ることができます。これは、ゲームのメインループや、ユーザーの入力を待ち続けるプログラムなどで意図的に使われます。

無限ループから脱出するには、break 文を使います。

サンプルコード:Enterキーが押されるまで入力を表示する

#include <stdio.h>

int main(void) {
    int ch; // getcharの戻り値(EOF)を考慮し、int型で受け取る

    printf("文字を入力してください (Enterで終了):\n");

    while (1) { // 無限ループ
        ch = getchar();

        // Enterキー(改行文字)が押されたらループを抜ける
        if (ch == '\n') {
            break;
        }

        printf("%c", (char)ch);
    }

    printf("\n終了しました。\n");
    return 0;
}

注意: getchar() が返す値には、ファイルの終端を示す特別な値 EOF (End of File) があります。EOFchar型の範囲外にあるため、getchar()の戻り値を受け取る変数はint型で宣言するのが安全な作法です。


do-while ループ:最低1回は実行したいときに

do-while ループは while とよく似ていますが、条件式の評価をループ処理の後に行うという決定的な違いがあります。

これにより、ループ内の処理が最低でも1回は必ず実行されることが保証されます。

基本構文:

do {
    // 最低1回は実行される処理
} while (条件式); // セミコロンを忘れない

ユーザーに最初に入力を促し、その入力値に応じてループを続けるかどうかを判断する、といった場面で役立ちます。

サンプルコード:0が入力されるまで繰り返す

#include <stdio.h>

int main(void) {
    int input_num;

    do {
        printf("数値を入力してください (0で終了): > ");
        scanf("%d", &input_num);
        printf("入力された値: %d\n", input_num);
    } while (input_num != 0); // 入力値が0でない間、ループを続ける

    printf("プログラムを終了します。\n");
    return 0;
}

【非推奨】goto 文について

goto文は、プログラムの実行を指定したラベルに強制的にジャンプさせる機能です。

// goto文の例(使用は推奨されません)
if (error_condition) {
    goto ERROR_HANDLER;
}
...
ERROR_HANDLER:
    printf("エラーが発生したため終了します。\n");

一見便利に見えるかもしれませんが、gotoを多用すると、プログラムの処理の流れが上から下へと進まず、あちこちにジャンプする**「スパゲッティコード」**と呼ばれる、非常に追いにくく、バグの温床となるコードを生み出します。

現代の構造化プログラミングでは、if, for, while, break などを適切に使うことで、goto を使わずに、よりクリーンで分かりやすいロジックを組むことができます。特別な理由がない限り、gotoの使用は避けるべきです。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次