while文について

最終更新日:2004-06-30.

今回は、while文についてちょっと。

・while文

while文を使うと、指定した条件が満たされている間
処理を繰り返すことができます。
これは、for文と同じような働きがあります。
その違いは、()内の引数です。

while()文の引数は「条件」という一つです。

while( 条件 ){
条件が満たされている間、処理を実行する
}

例えば、int型の変数iがあります。
そして、この変数の値が1から9の間、
それを表示することを考えてみましょう。

int i=1;

while ( i
printf("%d\n", i);
i++;
}

while()文で引数に指定した条件が満たされているときの値は1
となっています。
もし、

while( 1 ){
;/* 処理を省略 */
}

のようにした場合は、条件が常に満たされていることになります。
この際は、ブロックの中でループを抜けるための処理が必要です。

while()文の引数の条件を1にしておいて、{}中の文に
if()等の条件文を使う方法も考えられます。

ブロックの中の文が一つのときは{}を省略することができます。

上記は、また、以下のように書くこともできます。

int i=1;

while ( i
printf("%d\n", i++);

また、while()文には、処理を実行した後で条件判断を行うような
do while()という方法もあります。
そのような処理を行いたいときは以下のようにします。

do {
処理を実行する
} while( 条件 );

do while()を使って1から9までの数字を表示するには
以下のようにします。

int i=1;

do {
printf("%d\n", i);
i++;
} while ( i
while文においても、ブロック内の処理でループを抜けることや
ループの先頭に処理をうつすことができます。
ループから抜けるにはbreak、ループの先頭に処理をうつすには
continueをしようします。

では、ソースにしてみましょう。
+------------------------------------------------------------+
/* filename=no027-1.c */
/* include */
#include <stdio.h>
/* main */
int main( )
{
char c;
c='A';
printf("アルファベットを表示する。\n");
/* 繰り返し */
while( 1 ){
/* 抜ける */
if( c>'z' )
break;
if( ('A'<=c) && (c<='Z') )
printf("%c",c);
if( ('a'<=c) && (c<='z') )
printf("%c",c);
if( c=='Z' || c=='z' )
printf("\n");
/* インクリメント */
c++;
}
return 0;/* 終了 */
}
+------------------------------------------------------------+

上記をコンパイルして実行すると、以下のように表示されました。
アルファベットを表示する。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

ファイルの内容を1文字ずつ表示する。
+------------------------------------------------------------+
/* filename=no027-2.c */
/* include */
#include <stdio.h>
#include <stdlib.h>
/* main */
int main( )
{
FILE *fp;
int c;
/* test.txtファイルの内容を表示する */
fp=fopen("test.txt", "r");
if( fp==(FILE *)NULL )
exit(1);
printf("ファイルの内容を表示する。\n");
/* 繰り返し */
while( (c=fgetc(fp))!=EOF )
printf("%c", c);
return 0;/* 終了 */
}
+------------------------------------------------------------+

上記をコンパイルして実行すると、以下のように表示されました。
ファイルの内容を表示する。
ABCDEFG
HIJKLMN
OPQRSTUVWXYZ.

戻る