是个大杂烩,里面声明了从动态内存分配到常用算法等各种函数和宏
#数据类型
**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>的更多相关文章

  1. C标准头文件<math.h>

    定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...

  2. C标准头文件<stdio.h>

    是很多人学C语言接触的第一个头文件,顾名思义,stdio就是"标准输入输出",其中声明了一组关于输入输出的类型,宏和函数,其中就包括了打印著名的"hello,world! ...

  3. C标准头文件<assert.h>

    <assert.h>定义了两个用来调试程序的宏: assert和NDEBUG,assert用来判断表达式是否为真,如果为真继续执行,如果为假,向stderr输出一条错误消息,并调用< ...

  4. C标准头文件<ctype.h>

    主要包括了一些字符识别和转换函数 字符判断 isalnum() //函数原型 #include<ctype.h> int isalum(int c); 功能:如果输入的字符是字母(alph ...

  5. C标准头文件<signal.h>

    信号即异常,或者理解为中断,一个进程接收到一个信号,如果没有处理机制,就会按照默认的处理方式进行处理,而默认的处理方式通常是终止当前进程或忽略该信号.当然,程序也可以编写相应的处理信号的函数,一旦接收 ...

  6. C标准头文件<errno.h>

    声明了错误处理相关的宏 errno errno即error number,在程序启动时被设为0,当某个库函数运行出现错误的时候,会将相应的能表达错误类型的数字赋值给这个左值,这些数字往往有相应的宏来表 ...

  7. C标准头文件<string.h>

    里面主要包含了一些与字符串关联的函数的声明,这些函数有如下的命名规则: 以"mem"开头的函数操作任意的字符序列 以"strn"开头的函数操作非空字符序列 以& ...

  8. 头文件string.h,cstring与string

    string.h string.h是一个C标准头文件,所有的C标准头文件都形如name.h的形式,通过#include <string.h>可以导入此头文件.之后我们就可以在程序中使用st ...

  9. c标准头文件

    好多C语言库函数参考还是用的TC的库函数参考,因此特地把现在C语言(C99)标准库函数的24个头文件列表如下:assert.h types.h(C99)  signal.h  stdlib.h   c ...

随机推荐

  1. TODO:小程序手机预览调试

    TODO:小程序手机预览调试 1. 小程序注册,目前还未开通个人注册,主体类型为企业.政府.媒体.其他组织 2. 登录小程序,绑定开发者,获取AppID 3. 下载微信小程序示例-新片预告 https ...

  2. RequireJS学习笔记

    前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...

  3. Execute Sql Task 的Result DataSet如何返回

    Execute Sql Task的Result DataSet 主要有以下四种,当Execute Sql Task返回结果之后,需要使用SSIS Variable 来接收数据. 例子中使用的数据表代码 ...

  4. Join 和 apply 用法

    TSQL中的join语句共有五种类型,left join,right join,inner join,full join,cross join 为了描述方便,解释一个名词"保留表" ...

  5. 视图必须派生自 WebViewPage 或 WebViewPage<TModel>

    后端汇总:http://www.cnblogs.com/dunitian/p/4523006.html#efmvc 后来发现原来吧web.config给删了 这就简单了,复制其他项目的web.conf ...

  6. Sql Server系列:查询分页语句

    1 利用临时表分页 分页存储过程: CREATE PROCEDURE [USP_Product_GetPaged] ), ), @PageIndex INT, @PageSize INT AS BEG ...

  7. Java 超简单实现发送邮件(可动态控制发送人数)

    发送邮件的实现 需要事先引入以下几个架包,最重要的架包是jodd-3.7这个 以上架包下载地址:http://pan.baidu.com/s/1kVs7Tyv  提取密码:h22x 新建一个Util类 ...

  8. 【转】C#调用Windows图片和传真查看器打开图片

    //建立新的系统进程 System.Diagnostics.Process process = new System.Diagnostics.Process(); //设置文件名,此处为图片的真实路径 ...

  9. [转]用C/C++扩展PHP详解

    原文:http://www.imsiren.com/archives/547 一个简单的扩展模块 PHP非常容易扩展,因为它提供了我们想用的所有API. 如果要新建一个扩展,需要在PHP源码中执行ex ...

  10. 关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复

    下午在写代码时,突然发现一个列名为Enable的字段怎么也查询不出来,开始以为可能这个名称是关键字,所以给过滤掉了,所以就将名称修改为IsEnable,问题还是一样......将名称又改为IsEnab ...