この記事では、C言語において戻り値がvoidの関数を途中で終了させる方法について解説します。
条件分岐を使った関数の終了
関数の途中で終了させるためには、条件分岐を利用することができます。
以下では、if文
とswitch文
を使った関数の途中終了について説明します。
if文を使った関数の途中終了
if文
を使って条件を判定し、条件が満たされた場合に関数を終了させることができます。
以下は、if文
を使った関数の途中終了の例です。
#include <stdio.h>
void printNumber(int num) {
if (num < 0) {
printf("負の数は表示できません。\n");
return; // 関数の途中で終了
}
printf("入力された数は %d です。\n", num);
}
int main() {
printNumber(10); // 入力された数は 10 です。
printNumber(-5); // 負の数は表示できません。
return 0;
}
上記の例では、printNumber関数
内でnum
が負の数の場合にはエラーメッセージを表示し、return文
によって関数を途中で終了させています。
switch文を使った関数の途中終了
switch文
を使って条件を判定し、条件に合致する場合に関数を終了させることもできます。
以下は、switch文
を使った関数の途中終了の例です。
#include <stdio.h>
void printMonth(int month) {
switch (month) {
case 1:
printf("1月です。\n");
break;
case 2:
printf("2月です。\n");
break;
case 3:
printf("3月です。\n");
break;
default:
printf("1から3の範囲で入力してください。\n");
return; // 関数の途中で終了
}
}
int main() {
printMonth(2); // 2月です。
printMonth(5); // 1から3の範囲で入力してください。
return 0;
}
上記の例では、printMonth関数
内でmonth
の値に応じて該当する月を表示しています。
しかし、default
の場合にはエラーメッセージを表示し、return文
によって関数を途中で終了させています。
エラーハンドリングを使った関数の終了
関数の途中でエラーが発生した場合に、エラーハンドリングを行いながら関数を終了させることもできます。
以下では、エラーコードを返す方法とエラーメッセージを表示する方法について説明します。
エラーコードを返す方法
関数の途中でエラーが発生した場合には、エラーコードを返すことで呼び出し元にエラーを伝えることができます。
以下は、エラーコードを返す方法の例です。
#include <stdio.h>
int divide(int dividend, int divisor, int* result) {
if (divisor == 0) {
return -1; // エラーコード -1 を返す
}
*result = dividend / divisor;
return 0; // 正常終了の場合はエラーコード 0 を返す
}
int main() {
int result;
int error = divide(10, 0, &result);
if (error == -1) {
printf("0で割ることはできません。\n");
} else {
printf("結果: %d\n", result);
}
return 0;
}
上記の例では、divide関数
内でdivisor
が0の場合にはエラーコード -1
を返し、呼び出し元でエラーメッセージを表示しています。
エラーメッセージを表示する方法
関数の途中でエラーが発生した場合には、エラーメッセージを表示することでユーザーにエラーの内容を伝えることができます。
以下は、エラーメッセージを表示する方法の例です。
#include <stdio.h>
void openFile(const char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("ファイルを開けませんでした。\n");
return; // 関数の途中で終了
}
// ファイルの処理を行う
fclose(file);
}
int main() {
openFile("sample.txt"); // ファイルを開けませんでした。
return 0;
}
上記の例では、openFile関数
内でfopen関数
がファイルを開けなかった場合にはエラーメッセージを表示し、return文
によって関数を途中で終了させています。