IO分为文件IO和标准IO。
标准IO由C库提供,功能较少,属于比较底层的IO。文件IO是由Linux提供,功能更加丰富。
该篇文章主要讲的是时间编程。
时间编程是通过函数获取世界标准时间,计算方式以1970年1月1日凌晨0时0分0秒开始。
API :time
#include <time.h>
time_t time(time_t *tloc);
功能:获取系统标准时间
参数:tloc:保存秒数的变量地址
返回值:
、 成功返回:获取到秒数
失败:-1
第一个小程序测试!
PS:这里有两个需要注意的点。
第一个是类型,因为秒数太长,所以确定类型的时候需要设置为长整形。
第二,因为API的参数是一个指针类型,所以在传入参数的时候需要取地址。
#include <stdio.h>
#include <time.h>
int main(void)
{
long ret,t;
ret = time(&t);
printf("1970到现在的秒数为:%ld\n",ret);
return 0;
}
这里打印出来是整个秒数,一般的话都不会这样使用,毕竟谁家使用时间是通过秒来使用的呢,所以需要进行一些改变。
这个时候就需要使用ctime函数。该函数的原型在下面
2>将标准时间转化为字符串时间
ctime
#include <time.h>
char *ctime(const time_t *timep);
功能:
将标准时间转化为字符串时间
参数:
timep;以秒为单位的时间指针
返回值:
成功返回表示时间的字符串
失败:NULL
#include <stdio.h>
#include <time.h>
#include <string.h>
int main(void)
{
long t,ret;
ret = time(&t);
char buf[64];
stpcpy(buf,ctime(&ret));
//通过ctime可以将时间转化成为当前的时间
printf("当前时间为:%s\n",buf);
return 0;
}
执行的结果如下
可以看到,通过这个函数就能够获取到当前系统的时钟。
到这里,有些小伙伴可能会觉得,这样的时间喔不太喜欢,我想要自己设置格式的时间。这就需要下面的这个函数了 。
3>将标准时间转化为自定义格式的本地时间
localtime
#include <time.h>
struct tm *localtime(const time_t *timep);
功能:
标准时间转化为自定义格式的本地时间
参数: timep;以秒为单位的时间指针
返回值: 成功返回结构体指针:struct tm *失败返回:NULL
这个函数最重要的就是它的结构体tm
struct tm {
int tm_sec; /* Seconds (0-60) */秒数
int tm_min; /* Minutes (0-59) */分钟
int tm_hour; /* Hours (0-23) */小时
int tm_mday; /* Day of the month (1-31) */号
int tm_mon; /* Month (0-11) */月 要+1
int tm_year; /* Year - 1900 */年 加上1900
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
周几
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
一年中的第几天
int tm_isdst; /* Daylight saving time */夏令时
};
根据这个结构体,我们可以自定义我们需要的时间格式。它的月份是从Month (0-11),所以使用的时候需要加1。年份的话它是减了1900,,所以打印的时候需要加上1900。
PS:调用这个结构体的时候需要注意哦
时间编程常见就是以上的内容了,喜欢的朋友可以自己去玩玩呀!