C言語(C/C++) 制御フロー のドキュメント

while文による繰り返し処理 (whileループの書式)

C/C++でwhile文を用いた繰り返し処理を紹介します。

概要

while文を利用すると、条件式が真(true)である限りブロック内のループ処理を実行し続けます。条件式が偽(false)になった場合に、ループから抜け出します。また、最初から条件式が偽(false)であった場合はブロック内部の処理は一度も実行されません。

書式

while (条件式){
...(処理)
}

プログラム例

コンソールアプリケーションを作成し、下記のコードを記述します。

コード

#include "stdafx.h"
#include <iostream>

int main()
{
  bool exit = false;
  while (exit == false) {
    std::cout << ">";
    char buffer[128];
    std::cin >> buffer;

    std::string str(buffer);
    if (str == "quit") {
      exit = true;
    }
  }

  std::cout << "whileループを抜けました。";
  std::cin >> buffer;

  return 0;
}

解説

while文の条件式は exit==false であり、exit変数がfalseである限りループが実行されます。ループの内部では画面に">"の文字を表示し、入力待ち状態になります。標準入力で入力された文字列はchar型配列のbufferに格納されます。その後std:string型のstrに変換され、文字列判定をします。入力された文字列が"quit"であれば、exit変数の値をtrueにすることでループから抜けます。

  bool exit = false;
  while (exit == false) {
    std::cout << ">";
    char buffer[128];
    std::cin >> buffer;

    std::string str(buffer);
    if (str == "quit") {
      exit = true;
    }
  }

実行結果

上記のプログラムを実行します。コマンドプロンプトウィンドウが表示され、下図の状態になります。">"が表示され入力待ち状態になっています。
while文による繰り返し処理 (whileループの書式):画像1

"Penguin"を入力し[Enter]キーを押します。">"が表示され入力待ち状態になります。
while文による繰り返し処理 (whileループの書式):画像2

文字列を入力して[Enter]キーを押します。"quit"ではない文字列のため、ループ内の処理が実行され入力待ち状態が続きます。
while文による繰り返し処理 (whileループの書式):画像3

"quit"を入力し[Enter]キーを押します。
while文による繰り返し処理 (whileループの書式):画像4

"quit"が入力されたため、whileループから抜け出し、whileループを抜けた旨のメッセージが表示されます。
while文による繰り返し処理 (whileループの書式):画像5

参考

STLを利用しないCスタイルのコードも紹介します。

#include "stdafx.h"

int main()
{
  bool exit = false;
  while (exit == false) {
    printf(">");
    char buffer[128];
    fgets(buffer, 128, stdin);
    
    if (strcmp(buffer,"quit\n") == 0) {
      exit = true;
    }
  }
  return 0;
}

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2018-03-09