[C言語] whileループでノットイコールを活用する方法
C言語でwhile
ループにノットイコールを活用する方法は、ループの継続条件として!=
演算子を使用することです。
例えば、ある変数x
が特定の値y
に等しくない限りループを続けたい場合、while (x != y)
と記述します。
この条件が真である間、ループ内のコードが実行されます。
ノットイコールを使うことで、特定の条件が満たされるまでループを続けることができ、特定の値に到達したときにループを終了させることができます。
whileループでノットイコールを活用する方法
ノットイコールを使ったループの例
C言語のwhile
ループでは、ノットイコール!=
を使って特定の条件が満たされるまでループを続けることができます。
以下に、ノットイコールを使った基本的なループの例を示します。
#include <stdio.h>
int main() {
int count = 0;
// countが5に等しくない間、ループを続ける
while (count != 5) {
printf("カウント: %d\n", count);
count++;
}
return 0;
}
カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4
この例では、count
が5に達するまでループが続きます。
ノットイコールを使うことで、特定の値に達するまで処理を繰り返すことができます。
ループの終了条件としてのノットイコール
ノットイコールは、ループの終了条件として非常に便利です。
特に、特定の値に到達するまで処理を続けたい場合に有効です。
以下の例では、ユーザーからの入力を受け取り、特定の文字列が入力されるまでループを続けます。
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
// "exit"が入力されるまでループを続ける
while (strcmp(input, "exit") != 0) {
printf("文字列を入力してください (終了するには 'exit' と入力): ");
scanf("%s", input);
}
return 0;
}
文字列を入力してください (終了するには 'exit' と入力): hello
文字列を入力してください (終了するには 'exit' と入力): world
文字列を入力してください (終了するには 'exit' と入力): exit
この例では、ユーザーが”exit”と入力するまでループが続きます。
strcmp関数
を使って文字列を比較し、ノットイコールを条件にすることで、特定の文字列が入力されるまでループを続けることができます。
無限ループを避けるための工夫
ノットイコールを使ったループでは、終了条件が正しく設定されていないと無限ループに陥る可能性があります。
無限ループを避けるためには、以下の点に注意する必要があります。
- 終了条件を明確にする: ループが終了するための条件を明確に設定します。
例:count != 5
のように、具体的な値を設定する。
- ループ内で条件を変化させる: ループ内で条件に影響を与える変数を適切に更新します。
例:count++
のように、ループ内で変数を更新する。
- デバッグを活用する: 無限ループに陥った場合、デバッグを活用してどの条件が満たされていないかを確認します。
これらの工夫をすることで、ノットイコールを使ったループでも安全にプログラムを実行することができます。
応用例
ユーザー入力を利用したループ
ユーザー入力を利用したループでは、ノットイコールを使って特定の入力がされるまでループを続けることができます。
以下の例では、ユーザーが”stop”と入力するまで、入力された文字列を表示し続けます。
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
// "stop"が入力されるまでループを続ける
while (strcmp(input, "stop") != 0) {
printf("文字列を入力してください (終了するには 'stop' と入力): ");
scanf("%s", input);
printf("入力された文字列: %s\n", input);
}
return 0;
}
文字列を入力してください (終了するには 'stop' と入力): hello
入力された文字列: hello
文字列を入力してください (終了するには 'stop' と入力): world
入力された文字列: world
文字列を入力してください (終了するには 'stop' と入力): stop
この例では、ユーザーが”stop”と入力するまで、入力された文字列を表示し続けます。
配列の探索におけるノットイコール
配列の中から特定の値を探す際にもノットイコールを活用できます。
以下の例では、配列の中から特定の値を探し、そのインデックスを表示します。
#include <stdio.h>
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int target = 3;
int index = 0;
int size = sizeof(numbers) / sizeof(numbers[0]);
// targetが見つかるまでループを続ける
while (index != size && numbers[index] != target) {
index++;
}
if (index != size) {
printf("値 %d はインデックス %d にあります。\n", target, index);
} else {
printf("値 %d は配列に存在しません。\n", target);
}
return 0;
}
値 3 はインデックス 2 にあります。
この例では、配列numbers
の中からtarget
の値を探し、そのインデックスを表示します。
ファイルの終端までの読み込み
ファイルを読み込む際に、ファイルの終端までループを続けるためにノットイコールを使うことができます。
以下の例では、ファイルの内容を1行ずつ読み込み、表示します。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
char line[256];
if (file == NULL) {
printf("ファイルを開くことができませんでした。\n");
return 1;
}
// ファイルの終端に達するまでループを続ける
while (fgets(line, sizeof(line), file) != NULL) {
printf("%s", line);
}
fclose(file);
return 0;
}
ファイルの内容が表示されます。
この例では、example.txt
の内容を1行ずつ読み込み、表示します。
特定の条件でのループ終了
特定の条件でループを終了するためにノットイコールを使うことができます。
以下の例では、ランダムな数値を生成し、特定の数値が生成されるまでループを続けます。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int number;
srand(time(NULL));
// 7が生成されるまでループを続ける
while ((number = rand() % 10) != 7) {
printf("生成された数値: %d\n", number);
}
printf("7が生成されました。\n");
return 0;
}
生成された数値: 3
生成された数値: 5
生成された数値: 9
生成された数値: 7
7が生成されました。
この例では、ランダムな数値を生成し、7が生成されるまでループを続けます。
エラーチェックにおけるノットイコール
エラーチェックの際にもノットイコールを活用できます。
以下の例では、ユーザーからの入力が正しい範囲内にあるかをチェックし、範囲外の場合は再入力を促します。
#include <stdio.h>
int main() {
int number;
// 1から10の範囲内でない限りループを続ける
do {
printf("1から10の範囲で数値を入力してください: ");
scanf("%d", &number);
} while (number < 1 || number > 10);
printf("入力された数値: %d\n", number);
return 0;
}
1から10の範囲で数値を入力してください: 15
1から10の範囲で数値を入力してください: 0
1から10の範囲で数値を入力してください: 5
入力された数値: 5
この例では、ユーザーが1から10の範囲内の数値を入力するまで、再入力を促します。
まとめ
この記事では、C言語におけるwhile
ループでノットイコールを活用する方法について、基本的な使い方から応用例までを詳しく解説しました。
ノットイコールを用いることで、特定の条件が満たされるまでループを続けることができ、ユーザー入力や配列の探索、ファイルの読み込みなど、さまざまな場面で役立つことがわかります。
これを機に、実際のプログラムでノットイコールを活用し、より効率的なコードを書いてみてはいかがでしょうか。