C语言从头学69——学习头文件time.h

news2024/12/21 20:37:19

      《C语言从头学》系列文章到这一篇就算告一段落了,感谢大家的支持!过一段时间将介绍一些MFC二维绘图函数的知识,请大家继续给予支持。
       在time.h头文件中定义了有关时间的数据类型、结构体、函数等,介绍如下:
1.时间类型 time_t
       time_t类型表示自1970年1月1日0分0秒(1970年初)至以后某一时刻的秒数;若为负数时,则表示至以前某一时刻的秒数,time()函数的返回值就是这一类型。
2.时间结构体 struct tm
       struct tm是一个数据结构,用来保存时间的各个组成部分,年、月、日、时、分、秒等。
       struct tm {
           int tm_sec; // 秒数 [0, 60]
           int tm_min; // 分钟 [0, 59]
           int tm_hour; // 小时 [0, 23]
           int tm_mday; // 日期 [1, 31]
           int tm_mon; // 月份 [0, 11],一月用 0 表示
           int tm_year; // 距离 1900 的年数
           int tm_wday; // 星期几 [0, 6],星期天用 0 表示
           int tm_yday; // 距离1月1日的天数 [0, 365]
           int tm_isdst; // 是否采用夏令时,1 表示采用,0 表示未采用
       };
3.函数time()
      功能:返回从1970年初至当前经过的秒数
      使用格式一:time(参1);
         参1:time_t类型指针变量(注意对变量取址)
      返回值:返回值会直接写入指针变量中,不需再接收。
      使用格式二:time(NULL);
      返回值:使用time_t类型变量接收返回值。
      说明:以上两种使用方式结果相同,区别:一个是指针,一个是变量。time函数出错时返回-1。
4.函数ctime()
      功能:将time_t类型的时间值输出为英语常用时间格式
      使用格式:ctime(参1);
          参1:time_t类型指针变量(注意是指针)
      返回值:char*类型字符串(内容为英语常用时间格式)
5.函数localtime()
      功能:将time_t类型的时间形式转换为当前时区的struct tm结构形式
      使用格式:localtime(参1);
          参1:time_t类型时间指针变量
      返回值:返回struct tm结构体变量指针
6.函数gmtime()
      功能:将time_t类型的时间形式转换为UTC时间的struct tm结构形式(世界协调时,与格林威治同)
      使用格式:gmtime(参1);
         参1:time_t类型时间指针变量
      返回值:返回struct tm结构体指针类型
7.函数asctime()
      功能:将struct tm结构体对象时间格式直接输出为英语常用时间格式
      使用格式:asctime(参1);
         参1:struct Tm结构体时间对象
      返回值:char*字符串
8.函数mktime()
      功能:把struct tm结构体时间格式转换回time_t时间格式
      使用格式:mktime(参1);
          参1:struct tm结构体对象指针
      返回值:返回time_t类型的时间
9、函数difftime()
      功能:来计算两个时间之间的差
      使用格式:difftime(参1,参2);
          参1、参2:time_t类型的时间值(参1结束时间,参2开始时间)
      返回值:double类型的时间差(单位是秒);
10、函数strftime()
      功能:将struct tm结构体格式转换为自定义格式字符串并复制到指定地址
      使用格式:size_t strftime(参1,参2,参3,参4);
         参1:指向接收字符串的指针
         参2:可以接收的最大字节数(size_t类型)
         参3:格式字符串(具体见后)
         参4:struct tm结构体对象
      返回值:成功复制的字符串长度;失败返回-1。
      参3参考内容:
          %a:星期几简写                %A:星期几全拼                 %b:月份的简写
          %B:月份全拼                    %c:日期和时间                 %d:月第几天 
          %H:小时(24小时制)         %I:小时(12小时制)             %J:年第几天 
          %m:月数                          %M:分钟                            %P:AM或PM 
          %R:时:分                         %S:秒                                 %U:年第几星期(周日始)   
          %w:星期第几天(周日始)  %W:年第几星期(周一始)    %x:完整年月日日期
          %X:完整时分秒                %y:两位数年份                  %Y:四位数年份  
          %Z:时区
11、函数clock()
      功能:提供程序开始执行至调用该函数时的CPU时钟周期。CPU时钟周期等于频率的倒数,因此不同计算机的clock()返回值会不同,为返回可比较的时间,需要使用宏CLOCKS_PER_SEC(每秒周期数),这个宏也在time.h中定义,通过这个宏可将周期数转换成秒。
       使用格式:clock(); //无参
       返回值:计算机程序运行经过的CPU周期数值(clock_t类型)。
       说明:
       a. 一般计算时间间隔采用两次调用clock()函数,通过计算机差值得到用时;
       b. clock的精度比time要高,注意在计算时差时要将相关值强转成double型。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
#include<math.h>

int main(void)
{
    char ch[1024]; //定义一个字符数组
    int n = 0; //定义一个整形变量并赋初值
    printf("请开始输入字符:(回车结束)\n");
    while (1) //使用while循环语句
    {
        char c = getchar(); //从键盘接收一个字符并赋给字符变量c
        ch[n] = c; //字符数组依序存储输入的字符
        if (c == '\n') { break; }
        //检查到输入回车符时利用break退出while循环
        n++; //n做自增运算
    }
    printf("显示输入的内容:\n");
    for (int i = 0; i < 1024; i++)
        //根据声明的字符数组长度进行for循环
    {
        if (ch[i] == '\n')  break;
        //遇到数组中的回车符时利用break退出for循环
        if (ch[i] == '0')  continue;
        //当遇到字符0时,不显示直接进入下一循环
        printf("%c", ch[i]);
    }
    getchar();
//实验time_t类型、time()函数
    time_t t1;
    t1 = time(NULL);
    printf("1970年以来经过秒数:%lld\n", t1);//运行结果:等待用时3秒
//实验ctime()函数
    char* timeStr = ctime(&t1);
    printf("ctime输出:%s\n",timeStr);//运行结果:ctime输出:Sat Aug 10 15:23:16 2024
//实验struct tm结构体、localtime()函数、gmtime()函数
    time_t t;
    t = time(0);
    struct tm* tmLocal;
    struct tm* tmUTC;
    tmLocal = localtime(&t);
    printf("本地时间:%d年%d月%d日 %d时%d分\n", tmLocal->tm_year+1900, tmLocal->tm_mon, tmLocal->tm_mday,
        tmLocal->tm_hour, tmLocal->tm_min);//运行结果:本地时间:2024年7月10日 15时23分
    tmUTC = gmtime(&t);
    printf(" UTC时间:%d年%d月%d日 %d时%d分\n", tmUTC->tm_year + 1900, tmUTC->tm_mon, tmUTC->tm_mday,
        tmUTC->tm_hour, tmUTC->tm_min);//运行结果: UTC时间:2024年7月10日 7时23分
//实验函数asctime()
    //仍使用前边的变量t、tmLocal
    t = time(0);
    tmLocal = localtime(&t);
    char* sTime = asctime(tmLocal);
    printf("asctime函数转换结果:%s", sTime);//运行结果:asctime函数转换结果:Sat Aug 10 15:23:16 2024
//实验函数difftime()
    time_t start;
    time_t end;
    printf("按回车键开始计时...");
    getchar();
    start = time(0);
    printf("按回车键结束计时");
    getchar();
    end = time(0);
    printf("difftime函数计算的时间:%f秒\n", difftime(end, start));//运行结果:difftime函数计算的时间:0.000000秒
//实验strftime()函数
    //继续使用struct tm的tmLocal对象
    char str[128];
    strftime(str,128,"%Y年%m月%d日%H时%M分",tmLocal);
    printf("按中文习惯的时间表示:%s\n", str);//运行结果:按中文习惯的时间表示:2024年08月11日15时53分
//实验clock()函数
    clock_t st, en;
    st = clock();
    Sleep(500);
    en = clock();
    printf("用时:%f秒\n", (en - st) /(double) CLOCKS_PER_SEC);//运行结果:用时:0.511000秒
 	getchar();
	return 0;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python案例 |地图绘制及分级着色

1、分级着色地图 分级着色地图常用于可视化地理数据&#xff0c;比如人口密度、经济数据、气候变化等。其原理是使用颜色或阴影的渐变来表示不同区域(如国家、省份、城市等)中的数据差异。例如&#xff0c;地图上的每个区域根据其代表的数值被着色&#xff0c;通常数值越大&am…

React Leaflet + React Pixi:双倍的快乐,我全都要

一篇实用性的文章&#xff0c;记录一下最近在自娱自乐使用 Leaflet 和 PixiJS 的过程中整的一个有意思的活&#xff0c;帮助我们使用 React 声明式的语法在 Leaflet 的图层上使用 PixiJS 绘图。 如果你对这些库和它们的用途都已有所了解&#xff0c;只想直接看代码的话&#xf…

今日指数项目day8实战权限管理功能(下)

3.4 权限添加按钮 1&#xff09;原型效果 2&#xff09;接口说明 功能描述&#xff1a; 权限添加按钮 服务路径&#xff1a; /api/permission 服务方法&#xff1a;Post请求参数格式: {"type":"1", //菜单等级 0 顶级目录 1.目录 2 菜单 3 按钮"t…

牛筋面,一口就爱上的神仙美食

宝子们&#x1f44b;&#xff0c;今天我一定要给大家种草一款超级好吃的美食 —— 食家巷牛筋面&#x1f60b;。&#x1f380;牛筋面真的是一种神奇的存在✨。它的口感 Q 弹有嚼劲&#xff0c;就像在你的嘴巴里跳舞一样&#x1f483;。每一根面条都裹满了浓郁的酱汁&#xff0c…

原生mybatis框架引入mybatisplus,调用接口时找不到原生Mapper自带的默认方法

1.yaml配置文件和Mapper注解基本上可以不用关注&#xff0c;因为mybatis能用就证明这俩多半是没有问题的 2.再看看是不是映射出了问题&#xff0c;像Namespace的空间包名和Mapper没有对上之类的 这个框架的问题是出在配置mybatis的config文件当中&#xff0c;原本的config文件用…

Unity 从零开始搭建一套简单易用的UGUI小框架 扩展与优化篇(完结)

一个通用的UGUI小框架就算是写完了&#xff0c;下面是一步步的思考与优化过程 Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇-CSDN博客 从使用者的角度来整理一下可能会发出的疑问 0. Panel…

【微服务】springboot远程docker进行debug调试使用详解

目录 一、前言 二、线上问题常用解决方案 2.1 微服务线上运行中常见的问题 2.2 微服务线上问题解决方案 2.3 远程debug概述 2.3.1 远程debug原理 2.3.2 远程debug优势 三、实验环境准备 3.1 搭建springboot工程 3.1.1 工程结构 3.1.2 引入基础依赖 3.1.3 添加配置文…

YOLO11改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一种新颖的动态稀疏注意力机制…

C++,STL 029(24.10.13)

内容 一道练习题。 &#xff08;涉及string&#xff0c;vector&#xff0c;deque&#xff0c;sort&#xff09; 题目&#xff08;大致&#xff09; 有五名选手ABCDE&#xff0c;10个评委分别对每一个选手打分&#xff0c;去除最高分和最低分&#xff0c;取平均分。 思路&…

bat脚本banenr

飞出个未来班得 echo off echo .-. echo ( ) echo - echo J L echo ^| ^| echo J L echo ^| ^| echo J L echo …

Node.js概述

1. Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。 地址&#xff1a;Node.js 中文网 1.1 Node.js中的JavaScript运行环境 &#xff08;1&#xff09;浏览器是JavaScript的前端运行环境 &#xff08;2&#xff09;Node.js是JavaScript的后端运行环境 …

vue3之插件

插件plugins是一种能为vue添加全局功能的代码,官网连接&#xff1a;https://cn.vuejs.org/guide/reusability/plugins.html 项目的src文件夹下新建plugins文件夹 新建i18n.js文件 插件是一个拥有install方法的对象 export default {install: (app, options)>{app.config.…

Linux中用java命令运行class文件提示“错误:找不到或无法加载主类”

1.问题&#xff1a; 很多时候&#xff0c;我们需要在Linux终端编译并运行普通Java程序&#xff0c;但是会遇到以下问题&#xff1a; 错误&#xff1a;找不到或无法加载主类” 2.问题原因及解决办法 其实原因很简单&#xff0c;可能由两方面造成。 原因一 java在运行.class文…

进制的介绍

一、进制介绍 对于整数&#xff0c;有四种表示方式&#xff1a;二进制&#xff1a;0,1 &#xff0c;满 2 进 1.以 0b 或 0B 开头。十进制&#xff1a;0-9 &#xff0c;满 10 进 1。八进制&#xff1a;0-7 &#xff0c;满 8 进 1. 以数字 0 开头表示。十六进制&#xff1a;0-9 …

损失函数篇 | YOLOv8更换损失函数之SlideLoss | 解决简单样本和困难样本之间的不平衡问题

前言:Hello大家好,我是小哥谈。SlideLoss是一种新颖的损失函数,可以有效地解决YOLO算法在处理小目标和密集目标时的问题。本文所做出的改进是在YOLOv8算法中引入SlideLoss损失函数。🌈 目录 🚀1.基础概念 🚀2.更换方法 🍀🍀步骤1:loss.py文件修改 🍀�…

C#源码安装ZedGraph曲线显示组件

在软件开发里,数据的显示,已经是软件开发的大头。 如果让数据更加漂亮地、智能地显示,就是软件的核心价值了。 因为不管数据千万条,关键在于用户看到图。因为一个图表,就可以表示整个数据的趋势, 或者整个数据的走向,数据频度和密码。所以图表显示是软件的核心功能,比如…

25.1 降低采集资源消耗的收益和无用监控指标的判定依据

本节重点介绍 : 降低采集资源消耗的收益哪些是无用指标&#xff0c;什么判定依据 通过 grafana的 mysql 表获取所有的 查询表达式expr通过 获取所有的prometheus rule文件获取所有的 告警表达式expr通过 获取所有的prometheus 采集器接口 获取所有的采集metrics计算可得到现在…

SpringBoot——静态资源访问的四种方式

1.默认的静态资源目录 /static /public /resources /META-INF/resources 动态资源目录&#xff1a;/templates 2.resources静态资源目录图片存放 3. 静态资源访问 3.1.通过路径访问静态资源 http://localhost:8080/a.jpg http://localhost:8080/b.jpg …

《深度学习》OpenCV 物体跟踪 原理及案例解析

目录 一、物体跟踪 1、什么是物体跟踪 2、步骤 1&#xff09;选择跟踪算法 2&#xff09;初始化跟踪器 3&#xff09;在每个视频帧上执行跟踪 4&#xff09;可选的重新初始化 3、原理 二、案例实现 1、完整代码 1&#xff09;使用方式 2&#xff09;运行结果 2、关…

用python做一个简单的画板

一&#xff0c;画板的介绍 画板&#xff08;Paint Board&#xff09;是一个提供用户绘图、涂鸦和创作的平台。现代数字画板通常是由软件程序实现的&#xff0c;具有多种功能。以下是画板的一些主要特征和功能&#xff1a; 1. 基本绘图工具 画笔和铅笔&#xff1a;用户可以选…