【C言語】関数の途中で処理を終える
return を使う
C言語では return
文を使うことで、関数の途中で処理を終えて呼び出し元に戻ることができます。
基本的な例
#include <stdio.h>
void testFunction() {
printf("処理開始\n");
return; // ここで関数を終了
printf("この行は実行されない\n");
}
int main() {
testFunction();
printf("main関数の処理続行\n");
return 0;
}
条件による早期リターン
#include <stdio.h>
void checkNumber(int num) {
if (num < 0) {
printf("負の数なので処理を終了します。\n");
return;
}
printf("処理続行: %d\n", num);
}
int main() {
checkNumber(-5);
checkNumber(10);
return 0;
}
break を使う
break
はループ処理を途中で終了するために使います。
for ループでの使用
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
printf("5でループを終了\n");
break;
}
printf("%d\n", i);
}
return 0;
}
while ループでの使用
#include <stdio.h>
int main() {
int i = 0;
while (i < 10) {
if (i == 5) {
printf("5でループを終了\n");
break;
}
printf("%d\n", i);
i++;
}
return 0;
}
continue を使う
continue
は現在のループの処理をスキップし、次のループの繰り返しへ進みます。
for ループでの使用
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 偶数ならスキップ
}
printf("%d\n", i);
}
return 0;
}
while ループでの使用
#include <stdio.h>
int main() {
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue; // 偶数ならスキップ
}
printf("%d\n", i);
}
return 0;
}
goto を使う
goto
を使うことで、指定したラベルへジャンプして処理を終了できます。ただし、可読性が下がるため乱用は推奨されません。
基本的な例
#include <stdio.h>
int main() {
printf("処理開始\n");
goto end;
printf("この行は実行されない\n");
end:
printf("処理終了\n");
return 0;
}
exit を使う
exit()
関数を使うと、プログラム全体を終了できます。これは標準ライブラリの stdlib.h
に含まれています。
基本的な例
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("プログラム開始\n");
exit(0);
printf("この行は実行されない\n");
}
応用例
ファイル処理での早期リターン
#include <stdio.h>
void readFile(const char *filename) {
FILE *file = fopen(filename, "r");
if (!file) {
printf("ファイルを開けませんでした\n");
return;
}
printf("ファイルを開きました\n");
fclose(file);
}
int main() {
readFile("nonexistent.txt");
return 0;
}
エラーチェックと早期リターン
#include <stdio.h>
void process(int x) {
if (x < 0) {
printf("エラー: x は負の数です\n");
return;
}
printf("処理中: %d\n", x);
}
int main() {
process(-1);
process(10);
return 0;
}
ネストの浅いコードを作る
#include <stdio.h>
void checkValue(int x) {
if (x < 0) {
printf("負の数です\n");
return;
}
if (x == 0) {
printf("ゼロです\n");
return;
}
printf("正の数です\n");
}
int main() {
checkValue(-5);
checkValue(0);
checkValue(10);
return 0;
}