C标准头文件<stdlib.h>
是个大杂烩,里面声明了从动态内存分配到常用算法等各种函数和宏
#数据类型
**size_t**
**wchar_t**
**div_t**是一个结构体类型,也是div()返回的类型
**ldiv_t**是一个结构体类型,是ldiv()返回的类型
#宏
**NULL**
**EXIT_FAILURE**
**EXIT_SUCCESS**
**RAND_MAX**
**MB_CUR_MAX**
#函数
##文本转换
###atof()
```
/*
功能:将nptr指向的字符串的初始部分转换为double类型,等价于strtod(nptr, (char**)NULL)
参数:
返回值:
*/
double atof(const char* nptr);
```
###atoi()
```
/*
功能:把nptr指向的字符串的初始部分转换为int,等价于(int)strtol(nptr,(char**)NULL, 10)
参数:
返回值:
*/
int atoi(const char* nptr);
```
###atol()
```
/*
功能:把nptr指向的字符串的初始部分转换为long int,等价于strtol(nptr, (char**)NULL,10)
参数:
返回值:
*/
long int atol(const char* nptr)
```
###strtod()
```
/*
功能:把nptr指向的字符串的初始部分转换为double
参数:
返回值:
*/
double strtod(conts char* nptr, char** endptr);
```
###strtol()
```
/*
功能:把nptr指向的字符串的初始部分转换为long int
参数:
返回值:
*/
long int strtol(const char* nptr, char** endptr, int base);
```
###strtoul()
```
/*
功能:把nptr指向的字符串的初始部分转换为unsigned long int
参数:
返回值:
*/
unsigned long int strtoul(const char* nptr, char** enptr, int base);
```
##伪随机数
###srand()
```
/*
功能:产生一个伪随机数种子
参数:
返回值:
*/
void srand(unsigned int seed);
```
###rand()
```
/*
功能:计算一个伪随机数序列,范围在0~RAND_MAX
参数:
返回值:
*/
int rand(void);
```
##内存管理
###calloc()
```
/*
功能:为nmem个对象的数组分配空间,每个元素的大小为size,分配空间的所有位都被初始化为0
参数:
返回值:
*/
void* calloc(size_t nmemb, size_t size);
```
###free()
```
/*
功能:释放ptr指向的空间
参数:
返回值:
*/
void free(void* ptr);
```
###malloc()
```
/*
功能:为一个对象动态分配内存
参数:
返回值:
*/
void* malloc(size_t size);
```
###realloc()
```
/*
功能:将ptr指向的对象的大小改变为由size指定大小
参数:
返回值:
*/
void* realloc(void* ptr, size_t size);
```
##环境通信
###abort()
```
/*
功能:异常终止当前进程,除非捕获了SIGABRT且该信号的handler没有返回
参数:
返回值:
*/
void abort(void);
```
###atexit()
```
/*
功能:注册func指向的函数,该函数在程序正常终止的时候被调用,这个函数无参数
参数:
返回值:
*/
int atexit(void(*func)(void));
```
###exit()
```
/*
功能:正常终止当前进程
参数:
返回值:
*/
int exit(int status);
```
###getenv()
```
/*
功能:搜索宿主环境提供的环境表,从中查找一个和name串匹配的环境变量名
参数:
返回值:
*/
char* getenv(const char* name);
```
###system()
```
/*
功能:把string 指向的串传递给宿主环境,在宿主环境中适用命令处理程序执行这个命令
参数:
返回值:
*/
int system(const char* string);
```
##查找和排序
###bsearch()
```
/*
功能:搜索一个nmemb个对象的数组,来查找于key指向的对象匹配的元素,base指向这个数组的第一个元素,数组中每一个元素的大小由size指定
参数:
返回值:
*/
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, int (*compar)(const void*, const void*));
```
###qsort()
```
/*
功能:对一个包含nmemb个对象的数组进行排序
参数:
返回值:
*/
void qsort(void* base, size_t nmemb, size_t size, int(*compar)(const void*, const void*));
```
##整数算术
###abs()
```
/*
功能:计算整数的绝对值
参数:
返回值:
*/
int abs(int j);
```
###div()
```
/*
功能:计算分子除以坟墓所得的商和余数
参数:
返回值:返回一个div_t类型的结构,里面由成员`int quot//商`和`int rem//余数`
*/
div_t div(int numer, int denom);
```
###ldiv()
```
/*
功能:和div()类似,只是返回的基本数据类型都是long int
参数:
返回值:
*/
ldiv_t ldiv(long int numer, long int denom);
```
##多字节字符串函数
###mblen()
```
/*
功能:如果s不是void*, mblen()确定s指向的多姿接字符中包含的字节数,等价于mbtowc(wchar_t*)o,s,n);
参数:
返回值:
*/
int mblen(wchar_t* pwc, const char* s, size_t n);
```
###wctomb()
```
/*
功能:用来确定表示多字节字符所需要的字节数,这个多字节字符和值为wchar的编码相对应
参数:
返回值:
*/
int wctomb(char* s, wchar_t wchar);
```
##多字节串函数
###mbstowcs()
```
/*
功能:将s指向的数组中以初始的转移状态开始的多字节字符序列转换为相应的编码序列,并将最多n个编码存放到pwcs指向的数组中
参数:
返回值:
*/
size_t mbstowcs(wchar_t* pwcs, const char* s, size_t n);
```
###wcstombs()
```
/*
功能:将以pwcs指向的数组中的多字节字符对应的编码序列转换成以初始的转移状态开始的多字节字符序列,并将结果存放在s指向的字符数组中
参数:
返回值:
*/
size_t wcstombs(char* s, const wchar_t* pwcs, size_tn);
```
##环境表操作
###getenv()
```
char *getenv(const char *name);
```
进程的环境表中查找目标环境变量,返回环境变量值的指针
这个函数出错后不更该errno,所以不能用perror()来错误处理
```
//查找环境变量SHELL的值
extern char** environ; //环境表指针
char** ppc=environ; //ATTENTION:不要直接用environ会弄丢表头!
char buf[20]={0};
while(*ppc!=NULL){
if(!strncmp(*ppc,"SHELL",5)){
printf("%s\n",strcpy(buf,*ppc+6)); //ATTENTION:是*ppc+6,不是*ppc,这样才能跨过"SHELL="
break; //ATTENTION:要跳出循环,这个可不能忘!
}
ppc++;
}
printf("%s\n",getenv("SHELL"));
````
###setenv()
```
int setenv(const char *name, const char *value, int overwrite);
```
在进程的环境表中添加新的环境变量或更改现有变量的值,如果name不存在当前的环境变量表中,就添加一个名为name,值为value的环境变量,如果name已经存在,且overwrite为0,则不更该环境变量的值,如果overwrite不为0,就会用value的值覆盖现有值
函数出错会修改errno,可以使用perror()作错误处理
```
int res=setenv("SHELL","abcd",0);
if(-1==res)
perror("setenv"),exit(-1);
```
###unsetenv()
```
int unsetenv(const char *name);
```
从环境表中删除指定的环境变量,成功返回0,失败返回-1并设置errno
```
int res=unsetenv("MARK");
if(-1==res)
perror("unsetenv"),exit(-1);
```
###putenv()
```
b) int putenv(char *string);
```
添加或更改环境变量的值,如果不存在就添加,如果已经存在就用新值覆盖旧值,和setenv()不同的是,这里的string的格式是"PATH=..."形式,包括了变量名和变量的值
成功返回0,失败返回-1并设置errno
```
int res=putenv("XJ=QQ");
if(0!=res)
perror("putenv"),exit(-1);
```
###clearenv()
```
int clearenv(void);
```
清空环境表中所有变量的值,并且把environ设为NULL,一个进程一个环境表,同一个可执行文件运行两次的环境表都可能不一样,所以清空表并没有什么问题。同一成功返回0,失败返回-1
```
int res=clearenv(); //可以清空, 因为一个进程一个环境表
if(0!=clearenv){
perror("clearenv");
```
C标准头文件<stdlib.h>的更多相关文章
- C标准头文件<math.h>
定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...
- C标准头文件<stdio.h>
是很多人学C语言接触的第一个头文件,顾名思义,stdio就是"标准输入输出",其中声明了一组关于输入输出的类型,宏和函数,其中就包括了打印著名的"hello,world! ...
- C标准头文件<assert.h>
<assert.h>定义了两个用来调试程序的宏: assert和NDEBUG,assert用来判断表达式是否为真,如果为真继续执行,如果为假,向stderr输出一条错误消息,并调用< ...
- C标准头文件<ctype.h>
主要包括了一些字符识别和转换函数 字符判断 isalnum() //函数原型 #include<ctype.h> int isalum(int c); 功能:如果输入的字符是字母(alph ...
- C标准头文件<signal.h>
信号即异常,或者理解为中断,一个进程接收到一个信号,如果没有处理机制,就会按照默认的处理方式进行处理,而默认的处理方式通常是终止当前进程或忽略该信号.当然,程序也可以编写相应的处理信号的函数,一旦接收 ...
- C标准头文件<errno.h>
声明了错误处理相关的宏 errno errno即error number,在程序启动时被设为0,当某个库函数运行出现错误的时候,会将相应的能表达错误类型的数字赋值给这个左值,这些数字往往有相应的宏来表 ...
- C标准头文件<string.h>
里面主要包含了一些与字符串关联的函数的声明,这些函数有如下的命名规则: 以"mem"开头的函数操作任意的字符序列 以"strn"开头的函数操作非空字符序列 以& ...
- 头文件string.h,cstring与string
string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...
- c标准头文件
好多C语言库函数参考还是用的TC的库函数参考,因此特地把现在C语言(C99)标准库函数的24个头文件列表如下:assert.h types.h(C99) signal.h stdlib.h c ...
随机推荐
- 《Entity Framework 6 Recipes》中文翻译系列 (7) -----第二章 实体数据建模基础之拆分实体到多表以及拆分表到多实体
2-6 拆分实体到多表 问题 你有两张或是更多的表,他们共享一样的主键,你想将他们映射到一个单独的实体. 解决方案 让我们用图2-15所示的两张表来演示这种情况. 图 2-15,两张表,Prodeuc ...
- 面向属性的CSS命名
自从开始做前端开发以来,我发现在开发页面的时候,总是有一个问题十分影响自己的开发效率,这个问题就是css的命名,主要是指css类选择器的命名.这个问题主要体现在:第一,有的内容你压根想不出用什么名字来 ...
- Utility1:Overview
Utility 是利用,使用的意思,utilization是指使用效率,利用率的意思. SQL Sever 内置 Utility Feature,便于集中监控Server关键资源(CPU和Disk)的 ...
- 数据访问模式:Identity Map(标识映射)模式
1.Identity Map模式简介 Identity Map(标识映射)模式是通过将所有已加载对象放在一个映射中确保所有对象只被加载一次,并且在引用这些对象时使用该映射来查找对象.在处理数据并发访问 ...
- MVC5 网站开发实践 1、建立项目
目录 MVC5 网站开发实践 概述 一.建立项目 1.建立团队项目 在办公室和家里使用不同的电脑,为了方便代码的共享将项目建立为团队项目. 如图打开vs2013→新建→团队项目(图1),会自动 ...
- JavaScript之自我总结篇
最近在看汤姆大叔的"深入理解JavaScript系列",写得真的不错,对于我而言特别是12章到19章,因为大叔研究的点,就主要是从底层来研究JavaScript为什么会出现钟种特有 ...
- MVC中处理表单提交的方式(Ajax+Jquery)
MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...
- Rust初步(七):格式化
在Rust中,如果要进行屏幕输出,或者写入到文件中,需要对数据进行格式化.这一篇总结一下它所支持的几种格式化方式. 这篇文章参考了以下官方文档,不过,按照我的风格,我还是会突出于C#语言的比较,这样可 ...
- 【记录】xUnit for vs2012/vs2013
关于 NUint 以及单元测试的相关内容,可以参考:[单元测试]NUint使用详解及Visual Studio配置. xUnit 是 NUint 的进化版本,使用方法和 NUint 类似,首先下载安装 ...
- C# 在excel表格中检索并导出数据
由于工作需要,我经常使用excel文档来存储和处理各种数据,在生活中偶尔也会使用excel表格来记录各种开销,相信很多朋友也和我一样.Excel的功能很强大,其中一个很实用的数据处理功能就是查找和替换 ...