LoginSignup
0
1

More than 3 years have passed since last update.

C言語で時間を管理してみた

Last updated at Posted at 2020-12-18

はじめに

この記事は、SLP KBIT Advent Calendar 2020 の18日目の記事です。
あと1週間するとクリスマスですね。

今回は、C言語でタイマーとストップウォッチを作っていきます。

作成する

環境

  • Windows10
  • Visual Studio Code

タイマーの作成

C言語:指定した秒数経過後にメッセージを表示する 】を参考にしました。

timer.c
        double start, end;
        double total = 0.0, set = 0.0;

        char message[] = "時間です!";

        printf("タイマーを何秒後にセットしますか? "); 
        scanf("%lf", &set);

        start = clock() / CLOCKS_PER_SEC;

        while(1){
            if(total > set){
                break;
            }
            end = clock() / CLOCKS_PER_SEC;
            total = end - start;
        }
        printf("%s\n", message);

これを実行すると以下のようになります。
スクリーンショット 2020-12-18 215910.png
(約)3秒後に「時間です!」と表示されました。
次はストップウォッチを作成していきます。

ストップウォッチの作成

C言語で簡単なストップウォッチのサンプルプログラム 】を参考にしました。

stopwatch.c
        double start, end;
        double total = 0.0, set = 0.0;

        char message[] = "時間だよ!";

        printf("タイマーを何秒後にセットしますか? "); 
        scanf("%lf", &set);

        start = clock() / CLOCKS_PER_SEC;

        while(1){
            if(total > set){
                break;
            }
            end = clock() / CLOCKS_PER_SEC;
            total = end - start;
        }
        printf("%s\n", message);

これを実行すると以下のようになります。
スクリーンショット 2020-12-18 215752.png
Enterキーを押すと経過時間が表示されました。

完成したソースコード

タイマーとストップウォッチを一つにまとめました。

timekeep.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(void)
    {
        double start, end;
        double total = 0.0, set = 0.0;
        int a, b;
        char message[] = "時間です!";

        puts("タイマーを使いますか?ストップウォッチを使いますか?");
        puts("タイマー:1 , ストップウォッチ:2");

        do{
            printf("1か2を入力してください:");
            scanf("%d", &a);

        }while(a < 0 || a > 2);

        if(a == 1){
            /* タイマー */
            printf("\nタイマーを何秒後にセットしますか? ");   
            scanf("%lf", &set);

            start = clock() / CLOCKS_PER_SEC;

            while(1){
                if(total > set){
                    break;
                }
                end = clock() / CLOCKS_PER_SEC;
                total = end - start;
            }
            printf("\n\n%s\n", message);
        }else{
            /* ストップウォッチ */
            clock_t start, end;
            puts("\nストップウォッチを開始します。");
            printf("止めるときはEnterキーを押してください。");

            b = getchar();
            putchar(b);
            start = clock();

            b = getchar();
            putchar(b);
            end = clock();
            printf("%.3f秒です。\n", (double)(end - start) / CLOCKS_PER_SEC);
        }
    }

おわりに

C言語でタイマーとストップウォッチを作りました。
タイマーを作る際に音楽が流れるようにしたかったのですが、やり方が分からず断念しました。
次はパソコン内の音楽を流す方法を考えていきます。

また、記事を書くことが初めてで読みづらい文章になってしまいました。
今後はおおくの記事を読んで研究して、読みやすいものを書きます。

参考にしたもの

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1