【C言語】関数の途中で処理を終える

【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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です