是个大杂烩,里面声明了从动态内存分配到常用算法等各种函数和宏
#数据类型
**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. ASP.NET MVC 5 - 开始MVC5之旅

    本教程将使用Visual Studio 2013手把手教你构建一个入门的ASP.NET MVC5 Web应用程序.本教程配套的C#源码工程可通过如下网址下载:C#版本源码链接.同时,请查阅 Build ...

  2. C语言 · 回文数 · 基础练习

    问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数.   代码如下: 注意:这里要提醒一下读者:蓝 ...

  3. Android开发学习之路-Android Studio开发小技巧

    上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Andro ...

  4. Leetcode-463 Island Perimeter

    #463. Island Perimeter You are given a map in form of a two-dimensional integer grid where 1 represe ...

  5. 使用 fixed role 授予权限

    今天下午,Leader 发mail给我,要求授予某个User对数据库只读的权限. Step1,在SQL Server中为该用户创建一个Login和User,在创建User时,建立Login 和 Use ...

  6. 获取URL最后一个 ‘/’ 之后的字符

    在开发项目的过程中,经常遇到需要解析论坛,博客等的URL的问题,比如:'abc/def/jkl' 或 'abc/def/jkl/',获取最后一个‘/’之后的所有字符‘jkl’,由于特殊字符'/'的个数 ...

  7. 实战MEF(3):只导出类的成员

    通过前面两篇文章的介绍,相信各位会明白MEF中有不少实用价值.上一文中我们也讨论了导入与导出,对于导出导入,今天我们再深入一点点,嗯,只是深入一点点而已,不会很难的,请大家务必放心,如果大家觉得看文章 ...

  8. 解密jQuery内核 DOM操作

    jQuery针对DOM操作的插入的方法有大概10种 append.prepend.before.after.replaceWith appendTo.prependTo.insertBefore.in ...

  9. 前端学PHP之运算符

    × 目录 [1]总括 [2]算术运算符 [3]赋值运算符[4]位运算符[5]比较运算符[6]错误控制[7]逻辑运算符[8]字符串连接[9]数组运算符 前面的话 运算符是可以通过给出的一或多个表达式来产 ...

  10. .NET平台机器学习资源汇总,有你想要的么?

    接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分用过的 ,会有稍微详细点的说明,其他没用过的, ...