C和指针 第十六章 标准函数库
字符串转换:
long int strtol(char const *string, char **unused, int base);
将字符串转换为数值形式,遇到非法字符停止,如果stop不是NULL,则将转换停止位置储存在stop中。
#include <stdlib.h>
#include <stdio.h> int main()
{
//stop储存转换停止的位置的指针
char *stop;
printf("%ld\n", strtol("123abc", &stop, 10));
printf("%s\n", stop); //如果字符串以0x开头,base为0或者16都会以16进制转换
printf("%ld\n", strtol("0x123", &stop, 16));
printf("%s\n", stop);
printf("%ld\n", strtol("0x123", &stop, 0));
printf("%s\n", stop); //当base不是0和16遇到0x,为非法字符
printf("%ld\n", strtol("0x123", &stop, 10));
printf("%s\n", stop); return 0;
}
运行:

日期和时间:
clock_t clock(void);
clock返回从秩序开始执行处理器所消耗的时间,通常是处理器时钟的滴答次数,如果需要转换成秒,需要除以常量 CLOCKS_PER_SEC
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <windows.h> int main()
{
clock_t start;
clock_t end;
//开始时间
start = clock();
//睡眠3000毫秒
Sleep(3000);
//结束时间
end = clock(); printf("%lu", (end - start) / CLOCKS_PER_SEC);
return 0;
}
运行:

time_t time(time_t *returned_value);
不同编译器有不同返回值,所以不可以通过两次相减获得时间差,一般默认返回从1970后到现在的秒数,如果需要时间差可以通过difftime函数
int main()
{
time_t now;
now = time(NULL); printf("%lu", now);
return 0;
}
运行:

char *ctime(time_t const *time_value)
ctime函数的参数是一个指向time_t的指针,并返回一个指向字符串的指针
struct tm *gmtime(time_t const *time_value)
struct tm *localtime(time_t const *time_value)
gmtime函数把时间值转换为世界协调时间,localtime转换为本地时间,struct tm结构包含时间的各个字段信息。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <windows.h> int main()
{
time_t now;
time_t end;
char *time_s;
//now为1970年至今时间戳
now = time(NULL);
//time_s为日期字符串格式
time_s = ctime(&now);
printf("%s %lu\n", time_s, now); //休眠一秒
Sleep(1000);
end = time(NULL);
//difftime返回秒数时间差
printf("between %g\n", difftime(end, now)); //localtime转换time_t值为tm结构,tm结构包含日期和时间的各个组成部分
struct tm *tm_time = localtime( &end);
//tm结构体中月份以0为开始, tm_year以1900为起始年
printf("%d %d %d\n", tm_time -> tm_mon + 1, tm_time -> tm_mday, tm_time -> tm_year + 1900); //gmtime转换为UTC时间
tm_time = gmtime( &end);
//tm结构体中月份以0为开始, tm_year以1900为起始年
printf("%d %d %d\n", tm_time -> tm_mon + 1, tm_time -> tm_mday, tm_time -> tm_year + 1900); //asctime函数把tm参数所表示的时间转换为一个指定格式的字符串
char *astime;
astime = asctime(tm_time);
printf("%s\n", astime);
return 0;
}
运行:

函数strftime把一个tm结构转换成一个根据某个格式字符串而指定的字符串。
size_t strftime(char *string, size_t maxsize, char const *format, struct tm const *tm_ptr);
如果转换结果字符串长度小于maxsize参数,那么该字符串就被复制到第一个参数指定的数组中。
#include <stdlib.h>
#include <stdio.h>
#include <time.h> int main()
{
char format_time[100];
size_t maxsize = 100;
char format[100] = "%Y-%m-%d %H:%M:%S";
time_t now;
now = time(NULL);
struct tm *time_tm = localtime(&now);
strftime(format_time, maxsize, format, time_tm);
printf("%s", format_time);
return 0;
}
运行:

localtime和gmtime可以把time_t转换成tm结构体个,而mktime可以把tm结构体转换成time_t值
time_t mktime(struct tm *tm_ptr)
C和指针 第十六章 标准函数库的更多相关文章
- C和指针 第十六章 标准函数库 信号
信号名<signal.h> 程序中大多数错误都是程序本身导致的,但是,有些程序遇到的事件却不是程序本身所引发的.比如用户终止程序,程序无法预知此类事件发生的情况,信号就是为了对此类事件做出 ...
- C和指针 第十六章 标准函数库 本地跳转setjmp.h
setjmp和longjmp提供一种类似goto语句的机制,但它的作用域不局限于同一个函数的作用域之内.这些函数可以用于深层次的嵌套函数调用链. int setjmp(jmp_buf state); ...
- C和指针 第十六章 习题
16.8 计算平均年龄 #include <stdlib.h> #include <stdio.h> #define MAX_LEN 512 int main() { int ...
- UNP学习笔记(第二十六章 线程)
线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还 ...
- 【C++】《C++ Primer 》第十六章
第十六章 模板与泛型编程 面向对象编程和泛型编程都能处理在编写程序时不知道类型的情况. OOP能处理类型在程序允许之前都未知的情况. 泛型编程在编译时就可以获知类型. 一.定义模板 模板:模板是泛型编 ...
- 《Linux命令行与shell脚本编程大全》 第十六章 学习笔记
第十六章:创建函数 基本的脚本函数 创建函数 1.用function关键字,后面跟函数名 function name { commands } 2.函数名后面跟空圆括号,标明正在定义一个函数 name ...
- Gradle 1.12 翻译——第十六章. 使用文件
有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...
- 第十六章——处理锁、阻塞和死锁(3)——使用SQLServer Profiler侦测死锁
原文:第十六章--处理锁.阻塞和死锁(3)--使用SQLServer Profiler侦测死锁 前言: 作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用.此时,你需要尽快侦测 ...
- CSS3秘笈复习:十三章&十四章&十五章&十六章&十七章
第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮 ...
随机推荐
- python学习5
1.切片,python中一个比较重要的概念,其实和MATLAB中的数组的操作很相像. 比如对于 a =[1,2,3,4,...,100]如果想取前三个,即[1,2,3] 直接说a[0,3]即可,还可以 ...
- CSS3文字渐变效果
background-clip + text-fill-color下的实现 如果您手头上的浏览器是Chrome或是Safari,则您可以在demo页面中看到类似下面的效果: <h2 class= ...
- [LeetCode] Number of 1 Bits 位1的个数
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...
- 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
注:下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angu ...
- Mysql查询——学习阶段
1.开篇 搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间.另外还有一个地方需要注意的是我们写的sql语句. 一个拥有多年开发的资深开发者可 ...
- js或css文件后面的参数是什么意思?
经常看到不少导航网站测样式或js文件后面加了一些参数,主要是一你为一些并不经常更新的页面重新加载新修改的文件. 经常遇到页面里加载的js与css文件带有参数,比如: <script type=& ...
- asp.net 正则获取url参数
现在有一种场景:Url是数据库里面的,里面带有很多参数,如何获取具体参数的值呢? var uri = new Uri(pageUrl); var queryString = uri.Query; va ...
- SpringMVC注解汇总(二)-请求映射规则
接上一节SpringMVC注解汇总-定义 讲到Httpy请求信息 URL路径映射 1)普通URL路径映射 @RequestMapping(value={"/test1", &quo ...
- vue+webpack实践
最近使用了vue来做SPA应用,记一波学习笔记. 使用vue+webpack实现前端模块化. vuejs——轻量.学习成本低.双向绑定.无dom的操作.组件的形式编写 推荐官方文档 vue.js官方文 ...
- 扩展欧几里得 exGCD
Elementary Number Theory - Extended Euclid Algorithm Time Limit : 1 sec, Memory Limit : 65536 KB Jap ...