---
# System prepended metadata

title: 時間處理標頭檔

---

# 時間處理標頭檔
- `<time.h>`
    - 常用指令
        - time(...)
            - 呼叫所需秒數
            - 用法
            ```C=
            time() /*代入一個長的int變數*/
            ```
            ```c=
            long int parameter;
            long int sec;

            sec = time(&parameter); /*也是可以不要回傳值啦*/
            printf("%ld", sec);
            printf("%ld", parameter);
            ```
            [引數的參考資料](https://edisonx.pixnet.net/blog/post/35305668)
            ```c=
            sec = time(NULL);
            ```
            - 補充：NULL是第一個意思
                - 0
                - 垃圾筒
                - 黑洞
                - 萬用指標
            - [回傳值?](http://kaiching.org/pydoing/c/c-return-type.html)
              - 具體作用
                - time會計算EPOCH到time指令剎那所經秒數
                - 可以用sizeof()填入下方修改整數長度
                - `%d, sizeof(填入下方)`
                    - short int：2byte
                    - int：4byte
                    - long int：4byte `%ld`
                        - Mac是8byte
                        - 在標頭檔time.h下可以寫成`time_t`
                    - long long int：128byte
                    - 長度是修飾字
                        - 可以寫成short/long，但絕對不是一種型態（只有四種型態）
        - 名詞解釋
            - EPOCH計算機紀元元年1970/1/1 00:00:00
- 程式能反映出計算時間、處理狀態是比較好的互動
- 備註
    - VS code附加元件Prettier可以自動排版語言
        - 勾這些設定
            ![](https://i.imgur.com/XNtrow6.png)
    - 雲端編譯器的原理
        - 輸入→伺服器（通常為Linux）→回傳
        - 缺點：不能讀取本機檔案，實踐一些功能，例如音樂播放
    - 書不一定比線上教學好
- 實用價值
    - 假設有一款遊戲，你就可以在開頭加上time_t start跟time_t end然後相減他們得到秒數。
老師的範例：
```c=
#include <stdio.h>
#include <time.h>

int main()
{
    puts("----------Number Guessing Game-----------");
    puts("Rules: the answer is an integer between 0 ~ 9, guessing by inputting from keyboard.");
    const int answer = 6;
    int playerGuess;

    time_t start = time(NULL);
    printf("Input Here: ");
    scanf("%d", &playerGuess);

    if (playerGuess > 9)
    {
        puts("Your answer is too big, and out of upper bound.");
    }
    else if (playerGuess <= 9 && playerGuess >= 7)
    {
        puts("Your answer is too big.");
    }
    else if (playerGuess == 6)
    {
        puts("BINGO! you got it!!");
    }
    else if (playerGuess <= 5 && playerGuess >= 0)
    {
        puts("Your answer is too small.");
    }
    else
    {
        puts("Your answer is too small, and out of lower bound.");
    }
    time_t end = time(NULL);

    printf("You take %ld seconds to play\n", end - start);
    puts("-----------------GAME OVER--------------");
    return 0;
}

```
務必留意計時器位置
### 另一個常用指令`ctime()`