【C言語】現在時刻をprintf関数で画面に表示する方法

この記事では、time関数localtime関数を使って現在時刻を取得し、それをprintf関数で表示する方法をわかりやすく解説します。

初心者の方でも理解できるように、サンプルコードやエラーハンドリングの方法も含めて説明しますので、ぜひ参考にしてください。

目次から探す

printf関数で現在時刻を表示する方法

C言語で現在時刻を画面に表示する方法について解説します。

具体的には、time関数localtime関数を使用して現在時刻を取得し、それをprintf関数で表示する方法を説明します。

現在時刻を取得する方法

まず、現在時刻を取得する方法について説明します。

time_t型の変数を宣言

現在時刻を取得するためには、time_t型の変数を宣言します。

time_tは、時間を表すためのデータ型で、通常は秒数として表現されます。

time_t current_time;

time関数を使用して現在時刻を取得

次に、time関数を使用して現在時刻を取得します。

time関数は、現在のカレンダー時刻を取得し、それをtime_t型の変数に格納します。

current_time = time(NULL);

time関数の引数にNULLを渡すことで、現在時刻を取得できます。

現在時刻を人間が読める形式に変換する方法

取得した現在時刻は、time_t型のままでは人間が読める形式ではありません。

そこで、localtime関数を使用して、time_t型の時刻を人間が読める形式に変換します。

struct tm型の変数を宣言

まず、struct tm型の変数を宣言します。

struct tmは、年、月、日、時、分、秒などの情報を持つ構造体です。

struct tm *local_time;

localtime関数を使用してtime_tをstruct tmに変換

次に、localtime関数を使用して、time_t型の時刻をstruct tm型に変換します。

local_time = localtime(¤t_time);

localtime関数は、time_t型の時刻を引数として受け取り、それをstruct tm型のポインタとして返します。

printf関数の基本的な使い方

printf関数は、フォーマット指定子を使用して、さまざまな形式でデータを表示するための関数です。

基本的な使い方は以下の通りです。

printf("フォーマット文字列", 値1, 値2, ...);

例えば、整数を表示する場合は、%dを使用します。

int num = 10;
printf("数値: %d\n", num);

struct tmのメンバを使用して時刻を表示

struct tmのメンバを使用して、年、月、日、時、分、秒を表示します。

年、月、日を表示

struct tmのメンバを使用して、年、月、日を表示します。

printf("現在の日付: %d-%02d-%02d\n", local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday);

tm_yearは1900年からの年数を表すため、1900を加算します。

tm_monは0から始まるため、1を加算します。

時、分、秒を表示

同様に、時、分、秒を表示します。

printf("現在の時刻: %02d:%02d:%02d\n", local_time->tm_hour, local_time->tm_min, local_time->tm_sec);

完全なサンプルコード

最後に、上記の内容をまとめた完全なサンプルコードを示します。

#include <stdio.h>
#include <time.h>
int main() {
    // 現在時刻を取得
    time_t current_time;
    current_time = time(NULL);
    // 現在時刻を人間が読める形式に変換
    struct tm *local_time;
    local_time = localtime(¤t_time);
    // 年、月、日を表示
    printf("現在の日付: %d-%02d-%02d\n", local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday);
    // 時、分、秒を表示
    printf("現在の時刻: %02d:%02d:%02d\n", local_time->tm_hour, local_time->tm_min, local_time->tm_sec);
    return 0;
}

このコードを実行すると、現在の日付と時刻が画面に表示されます。

例えば、2023年10月1日の15時30分45秒の場合、以下のように表示されます。

現在の日付: 2023-10-01
現在の時刻: 15:30:45

以上が、C言語で現在時刻を取得し、printf関数で画面に表示する方法です。

ぜひ、実際にコードを実行して確認してみてください。

エラーハンドリング

C言語でプログラムを作成する際には、エラーハンドリングが非常に重要です。

特に、システムの現在時刻を取得する場合、time関数localtime関数が失敗する可能性があります。

ここでは、それぞれの関数のエラーハンドリング方法について解説します。

time関数のエラーチェック

time関数は、現在のカレンダー時刻を取得するために使用されます。

この関数は、成功すると現在の時刻をtime_t型で返しますが、失敗すると(time_t)(-1)を返します。

したがって、エラーチェックを行うためには、戻り値が(time_t)(-1)であるかどうかを確認する必要があります。

以下に、time関数のエラーチェックを含むサンプルコードを示します。

#include <stdio.h>
#include <time.h>
int main() {
    time_t current_time;
    // 現在時刻を取得
    current_time = time(NULL);
    // エラーチェック
    if (current_time == (time_t)(-1)) {
        fprintf(stderr, "現在時刻の取得に失敗しました。\n");
        return 1;
    }
    printf("現在時刻の取得に成功しました。\n");
    return 0;
}

このコードでは、time関数が失敗した場合にエラーメッセージを表示し、プログラムを終了します。

localtime関数のエラーチェック

localtime関数は、time_t型の時刻をstruct tm型のローカル時刻に変換します。

この関数は、成功するとstruct tm型のポインタを返しますが、失敗するとNULLを返します。

したがって、エラーチェックを行うためには、戻り値がNULLであるかどうかを確認する必要があります。

以下に、localtime関数のエラーチェックを含むサンプルコードを示します。

#include <stdio.h>
#include <time.h>
int main() {
    time_t current_time;
    struct tm *local_time;
    // 現在時刻を取得
    current_time = time(NULL);
    // `time`関数のエラーチェック
    if (current_time == (time_t)(-1)) {
        fprintf(stderr, "現在時刻の取得に失敗しました。\n");
        return 1;
    }
    // `time_t`を`struct tm`に変換
    local_time = localtime(¤t_time);
    // `localtime`関数のエラーチェック
    if (local_time == NULL) {
        fprintf(stderr, "ローカル時刻への変換に失敗しました。\n");
        return 1;
    }
    printf("ローカル時刻への変換に成功しました。\n");
    return 0;
}

このコードでは、localtime関数が失敗した場合にエラーメッセージを表示し、プログラムを終了します。

エラーハンドリングを適切に行うことで、プログラムの信頼性と安定性を向上させることができます。

特に、システムリソースに依存する関数を使用する場合は、必ずエラーチェックを行うようにしましょう。

目次から探す