【C言語】戻り値がvoidの関数を途中で終了させる方法

この記事では、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文によって関数を途中で終了させています。

目次から探す