是个大杂烩,里面声明了从动态内存分配到常用算法等各种函数和宏
#数据类型
**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. 《Entity Framework 6 Recipes》中文翻译系列 (15) -----第三章 查询之与列表值比较和过滤关联实体

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-8与列表值比较 问题 你想查询一个实体,条件是给定的列表中包含指定属性的值. 解 ...

  2. SQLyog图形化l数据库的操作和学习

    1:首先SQLyog作为mysql的图形化操作工具,是一个收费的工具,但是在天朝大国,任何收费的软件都可以被破解,具体软件的安装不做多叙述,支持正版,毕竟作为一个开发人员,辛辛苦苦开发出来的软件,还指 ...

  3. KnockoutJS 3.X API 第七章 其他技术(1) 加载和保存JSON数据

    Knockout允许您实现复杂的客户端交互性,但几乎所有Web应用程序还需要与服务器交换数据,或至少将本地存储的数据序列化. 最方便的交换或存储数据的方式是JSON格式 - 大多数Ajax应用程序今天 ...

  4. SpringAOP之动态代理

    一.动态代理: 1.在原有的静态代理的基础上进一步的完善,由于静态代理中,重复写了相同的代码使得代码的整体结构显得冗余,而且还不同的核心类还需要有不用的代理类,是写死了的具体的类.所以需要使用动态代理 ...

  5. Maven Plugins常用配置

    官方文档:http://maven.apache.org/plugins/index.html# 这里主要介绍compiler插件的配置.http://maven.apache.org/plugins ...

  6. LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”

    我就不屁话,能一张图就解决的就不说话了 2015-03-28 14:53:24,440 [10] ERROR log - System.NotSupportedException: LINQ to E ...

  7. 【非愚人】重要通知:04-01 贴吧继PHP资源之后又。。。

    贴吧继PHP资源之后又取消了JAVA,IOS等资源的贴,现在专注于Net,C++,Linux,平面设计.主要是为了让广大Net程序员具备全栈全平台牛人的潜力,故而取消那些干扰因素.Net的潜力和活力大 ...

  8. Python标准模块--functools

    1 模块简介 functools,用于高阶函数:指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标. 在Python 2.7 中具备如下方法, cmp_to_ ...

  9. 配置 linux-bridge mechanism driver - 每天5分钟玩转 OpenStack(77)

    本节开始我们将学习 Linux Bridge 如何实现 Neutron 的各种功能.首先需要配置 linux-bridge mechanism driver. Neutorn ML2 plugin 默 ...

  10. DDD 领域驱动设计-看我如何应对业务需求变化,领域模型调整?

    写在前面 上一篇:DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对? "愚蠢的应对",这个标题是我后来补充上的,博文中除了描述需求变化.愚蠢应对和一些思考,确实没有实质性 ...