C语言 简单秒表程序

  • Post category:C

请看下文。

C语言 简单秒表程序使用攻略

程序功能

本程序实现的是一个简单的秒表,用户可以通过程序的命令行界面启动计时和停止计时。程序会不断输出经过的时间,以秒为单位。

程序实现

本程序使用了C语言编写,主要使用了标准库

程序主要有三个部分组成:

  1. 主函数:获取用户命令(开始、停止、退出)并调用相应的函数。
  2. 线程函数:计算时间并输出到控制台。
  3. 辅助函数:获取系统时间并计算时间差。

具体实现细节详见程序代码。

使用攻略

程序启动后,会在命令行界面等待用户命令。用户可以输入以下三个命令:

  • starts:启动计时。
  • stopp:停止计时。
  • quitq:退出程序。

用户输入命令后,程序会立即执行相应的操作。计时时间会在控制台输出,直到用户停止计时。

示例1

用户输入以下命令:

start

程序会开始计时并在控制台输出时间。

用户继续输入以下命令:

stop

程序会停止计时,并在控制台输出时间差。

示例2

用户输入以下命令:

start

程序会开始计时并在控制台输出时间。

用户在一段时间后继续输入以下命令:

stop

程序会停止计时,并在控制台输出时间差。

用户可以再次输入以下命令:

start

程序会继续计时,并在控制台输出经过的时间。用户可以在需要的时候停止计时。

程序代码

以下为完整的程序代码,请注意使用代码时需要自行添加必要的注释和格式化。

#include <stdio.h>
#include <time.h>
#include <pthread.h>

// 程序运行标志位
int running = 0;

// 开始计时时间戳
time_t start_time;

// 真正计时的线程函数
void* timer_func(void* arg)
{
    // 计时变量
    time_t cur_time, diff_time;
    long int diff_sec;

    while (running)
    {
        // 获取当前时间
        cur_time = time(NULL);

        // 计算时间差
        diff_time = cur_time - start_time;

        // 输出时间差
        diff_sec = *(long int*)(&diff_time);
        printf("\rTime elapsed: %ld seconds", diff_sec);

        // 休眠100毫秒
        usleep(100000);
    }

    // 退出线程
    pthread_exit(NULL);
}

// 获取当前时间,并转换为time_t类型
time_t get_cur_time()
{
    time_t cur_time;
    struct tm* tm_info;

    time(&cur_time);
    tm_info = localtime(&cur_time);

    tm_info->tm_sec = 0;
    tm_info->tm_min = 0;
    tm_info->tm_hour = 0;

    return mktime(tm_info);
}

// 开始计时
void start_timer()
{
    // 检查程序是否已经在计时
    if (running)
    {
        printf("Timer already started!\n");
        return;
    }

    // 设置开始计时时间
    start_time = time(NULL);

    // 启动计时线程
    running = 1;
    pthread_attr_t attr;
    pthread_t tid;
    pthread_attr_init(&attr);
    pthread_create(&tid, &attr, timer_func, NULL);
}

// 停止计时
void stop_timer()
{
    // 检查程序是否已经在计时
    if (!running)
    {
        printf("Timer not running!\n");
        return;
    }

    // 停止计时线程
    running = 0;
    printf("\n");
}

// 主函数
int main()
{
    // 获取用户命令
    char cmd[10];
    while (1)
    {
        printf("Enter command: ");
        scanf("%s", cmd);

        if (strcmp(cmd, "start") == 0 || strcmp(cmd, "s") == 0)
            start_timer();
        else if (strcmp(cmd, "stop") == 0 || strcmp(cmd, "p") == 0)
            stop_timer();
        else if (strcmp(cmd, "quit") == 0 || strcmp(cmd, "q") == 0)
            break;
        else
            printf("Invalid input!\n");
    }

    return 0;
}