app开发者平台在数字化时代的重要性与发展趋势解析
896
2022-08-26
ANSI C (3) —— 常用系统函数
字符测试函数
function | effect |
isalnum | 检测字符是否为英文或数字 |
isalpha | 检测字符是否为英文 |
isascii | 检测字符是否为ASCII码字符 |
iscntrl | 检测字符是否为ASCII码控制字符 |
isdigit | 检测字符是否为阿拉伯数字 |
islower | 检测字符是否为小写字符 |
isupper | 检测字符是否为大写字符 |
isprint | 检测字符是否为可打印字符 |
isspace | 检测字符是否为空格字符 |
ispunct | 检测字符是否是标点符号或特殊符号 |
isxdigit | 检测字符是否是16进制数字 |
简单例子:
#include
查找
function | format | effect |
bsearch | void bsearch(const void *key, const void *base, size_t *nelem, size_t width,int(*fcmp)(const void , const *)) | 使用二分查找的方法寻找目标值 |
qsort | void qsort(void base, int nelem, int width, int(*fcmp)(const void , const *)) | 快速排序算法得到有序序列 |
lfind | void lfind(void *key, void *base, int *nelem, int width,int (*fcmp)(const void , const void *)) | 线性搜索 |
lsearch | void lsearch(const void *key, void *base, size_t *nelem,size_t width, int (*fcmp)(const void , const void *)) | 线性搜索,找不到的话将目标数据加入数组 |
系统时间和日期函数
function | format | effect |
clock | clock_t clock(void) | 返回处理器时间的最佳近似值 |
time | time_t time(time_t *tp) | 获取系统时间 |
ctime | char *ctime(const time_t *time) | time_t日历时间转换为字符串形式的本地时间 |
difftime | double difftime(time_t time2, time_t time1) | 计算时间差函数 |
gmtime | struct tm *gmtime(const time_t *timer) | 将日历时间转换为 GMT |
localtime | struct tm *localtime(const time_t *timer) | 时间类型转换函数 |
mktime | time_t mktime(struct tm*timeptr) | 时间类型转换函数 |
asctime | char *asctime(const struct tm *tblock) | 把指定的 tm结构类的日期转换成字符串,如Mon Nov 21 11:31:54 1983 |
clock
clock_t是long替换,程序从启动到函数调用占用CPU的时间,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型
#include
分析:在程序挂起的时间段内,进程被调离出内存,所以没有占用cpu,那么程序的运行结果也就是0了。 换一个例子:
#include
time, ctime
在/usr/include/time.h中有这样一句话: typedef __time_t time_t; 并且在它的上面还有一句话: # include
#include
difftime
因为time获取的是系统时间,和CPU占用没有关系,所以这里的sleep()达到了效果(和clock的例子作比较)。
#include
gmtime asctime
struct tm的定义是这样的:
/* /usr/include/time.h */struct tm{ int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/# ifdef __USE_MISC long int tm_gmtoff; /* Seconds east of UTC. */ const char *tm_zone; /* Timezone abbreviation. */# else long int __tm_gmtoff; /* Seconds east of UTC. */ const char *__tm_zone; /* Timezone abbreviation. */# endif
下面的例子是:
graph TDA[time_t]-->B[struct tm]B-->|asctime|C[GMT time string]A-->|ctime|C
#include
localtime, mktime
graph TDA[struct tm]-->|mktime|B[time_t]B-->|localtime|A
环境控制函数
function | format | effect |
getenv | char *getenv(char *envvar) | 获取环境变量的内容 |
putenv | int putenv(char *envvar) | 改变或增加环境变量的内容 |
setenv | int setenv(const char name,const char value,int overwrite) | 改变或增加环境变量的内容 |
getenv
#include
putenv
#include
putenv不会对环境变量文件产生影响
/etc/environment
setenv
#include
内存分配函数
function | format | effect |
malloc | void *malloc(unsigned size) | 内存分配函数 |
free | void free(void *ptr) | 释放已经分配的内存 |
calloc | void *calloc(size_t nelem, size_t elsize) | 分配主存储器 |
getpagesize | size_t getpagesize(void) | 返回系统内存分页的大小 |
mmap | void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset) | 将一个文件或者其它对象映射进内存 |
munmap | int munmap(void *start,size_t length) | 解除内存映射 |
calloc
calloc申请内存空间后,会自动初始化内存空间为0:
#include malloc申请的内存是不会被初始化的。 getpagesize #include mmap, munmap #include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~