c常用函数.docx
《c常用函数.docx》由会员分享,可在线阅读,更多相关《c常用函数.docx(25页珍藏版)》请在冰点文库上搜索。
![c常用函数.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/bbe44eab-cd47-4243-b132-70c342f997bf/bbe44eab-cd47-4243-b132-70c342f997bf1.gif)
c常用函数
(1):
isalnum(测试字符是否为英文或数字)
相关函数isalpha,isdigit,islower,isupper
表头文件#include
定义函数intisalnum(intc)
函数说明检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c)||isdigit(c)”做测试。
(2):
isalpha(测试字符是否为英文字母)
相关函数isalnum,islower,isupper
表头文件#include
定义函数intisalpha(intc)
函数说明检查参数c是否为英文字母,在标准c中相当于使用“isupper(c)||islower(c)”做测试。
(3):
isascii(测试字符是否为ASCII码字符)
相关函数iscntrl
表头文件#include
定义函数intisascii(intc);
函数说明检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。
(4):
iscntrl(测试字符是否为ASCII码的控制字符)
相关函数isascii
表头文件#include
定义函数intiscntrl(intc);
函数说明检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。
(5):
isdigit(测试字符是否为阿拉伯数字)
相关函数isxdigit
表头文件#include
定义函数intisdigit(intc)
函数说明检查参数c是否为阿拉伯数字0到9。
(6):
isgraphis(测试字符是否为可打印字符)
相关函数isprint
表头文件#include
定义函数intisgraph(intc)
函数说明检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。
(7):
islower(测试字符是否为小写字母)
相关函数isalpha,isupper
表头文件#include
定义函数intislower(intc)
函数说明检查参数c是否为小写英文字母。
返回值若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
(8):
isprint(测试字符是(否为可打印字符)
相关函数isgraph
表头文件#include
定义函数intisprint(intc);
函数说明检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。
(9):
isspace(测试字符是否为空格字符)
相关函数isgraph
表头文件#include
定义函数intisspace(intc)
函数说明检查参数c是否为空格字符,也就是判断是否为空格('')、定位字符('\t')、CR('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。
(10):
ispunct(测试字符是否为标点符号或特殊符号)
相关函数isspace,isdigit,isalpha
表头文件#inlude
定义函数intispunct(intc)
函数说明检查参数c是否为标点符号或特殊符号。
返回TRUE也就是代表参数c为非空格、非数字和非英文字母。
返回值v若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。
(11):
isupper(测试字符是否为大写英文字母)
相关函数isalpha,islower
表头文件#include
定义函数intisupper(intc)
函数说明检查参数c是否为大写英文字母。
(12):
isxdigit(测试字符是否为16进制数字)
相关函数isalnum,isdigit
表头文件#include
定义函数intisxdigit(intc)
函数说明检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。
16进制数字:
0123456789ABCDEF。
(13):
atof(将字符串转换成浮点型数)
相关函数atoi,atol,strtod,strtol,strtoul
表头文件#include
定义函数doubleatof(constchar*nptr);
函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
(14):
atoi(将字符串转换成整型数)
相关函数atof,atol,atrtod,strtol,strtoul
表头文件#include
定义函数intatoi(constchar*nptr);
函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
(15):
atol(将字符串转换成长整型数)
相关函数atof,atoi,strtod,strtol,strtoul
表头文件#include
定义函数longatol(constchar*nptr);
函数说明atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
(16):
gcvt(将浮点型数转换为字符串,取四舍五入)
相关函数ecvt,fcvt,sprintf
表头文件#include
定义函数char*gcvt(doublenumber,size_tndigits,char*buf);
函数说明gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。
gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。
若转换成功,转换后的字符串会放在参数buf指针所指的空间。
(17):
strtod(将字符串转换成浮点数)
相关函数atoi,atol,strtod,strtol,strtoul
表头文件#include
定义函数doublestrtod(constchar*nptr,char**endptr);
函数说明strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。
若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。
参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。
如123.456或123e-2。
范例/*将字符串a,b,c分别采用10,2,16进制转换成数字*/
#include
mian()
{
chara[]=”1000000000”;
charb[]=”1000000000”;
charc[]=”ffff”;
printf(“a=%d\n”,strtod(a,NULL,10));
printf(“b=%d\n”,strtod(b,NULL,2));
printf(“c=%d\n”,strtod(c,NULL,16));
}
(18):
strtol(将字符串转换成长整型数)
相关函数atof,atoi,atol,strtod,strtoul
表头文件#include
定义函数longintstrtol(constchar*nptr,char**endptr,intbase);
函数说明strtol()会将参数nptr字符串根据参数base来转换成长整型数。
参数base范围从2至36,或0。
参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。
当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制做转换。
一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。
若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
返回值返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
(19):
strtoul(将字符串转换成无符号长整型数)
相关函数atof,atoi,atol,strtod,strtol
表头文件#include
定义函数unsignedlongintstrtoul(constchar*nptr,char**endptr,intbase);
函数说明strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。
参数base范围从2至36,或0。
参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。
当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16进制做转换。
一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。
若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
(20):
toascii(将整型数转换成合法的ASCII码字符)
相关函数isascii,toupper,tolower
表头文件#include
定义函数inttoascii(intc)
函数说明toascii()会将参数c转换成7位的unsignedchar值,第八位则会被清除,此字符即会被转成ASCII码字符。
(21):
tolower(将大写字母转换成小写字母)
相关函数isalpha,toupper
表头文件#include
定义函数inttolower(intc);
函数说明若参数c为大写字母则将该对应的小写字母返回。
返回值返回转换后的小写字母,若不须转换则将参数c值返回。
(22):
toupper(将小写字母转换成大写字母)
相关函数isalpha,tolower
表头文件#include
定义函数inttoupper(intc);
函数说明若参数c为小写字母则将该对映的大写字母返回。
返回值返回转换后的大写字母,若不须转换则将参数c值返回。
(23):
calloc(配置内存空间)
相关函数malloc,free,realloc,brk
表头文件#include
定义函数void*calloc(size_tnmemb,size_tsize);
函数说明calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。
这和使用下列的方式效果相同:
malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。
(24):
free(释放原先配置的内存)
相关函数malloc,calloc,realloc,brk
表头文件#include
定义函数voidfree(void*ptr);
函数说明参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。
调用free()后ptr所指的内存空间便会被收回。
假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。
若参数ptr为NULL,则free()不会有任何作用。
(25):
getpagesize(取得内存分页大小)
相关函数sbrk
表头文件#include
定义函数size_tgetpagesize(void);
函数说明返回一分页的大小,单位为字节(byte)。
此为系统的分页大小,不一定会和硬件分页大小相同。
返回值内存分页大小。
附加说明在Intelx86上其返回值应为4096bytes。
(26):
malloc(配置内存空间)
相关函数calloc,free,realloc,brk
表头文件#include
定义函数void*malloc(size_tsize);
函数说明malloc()用来配置内存空间,其大小由指定的size决定。
返回值若配置成功则返回一指针,失败则返回NULL。
(27):
asctime(将时间和日期以字符串格式表示)
相关函数time,ctime,gmtime,localtime
表头文件#include
定义函数char*asctime(conststructtm*timeptr);
函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为:
“WedJun3021:
49:
081993\n”
返回值若再调用相关的时间日期函数,此字符串可能会被破坏。
此函数与ctime不同处在于传入的参数是不同的结构。
(28):
ctime(将时间和日期以字符串格式表示)
相关函数time,asctime,gmtime,localtime
表头文件#include
定义函数char*ctime(consttime_t*timep);
函数说明ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为“WedJun3021:
49:
081993\n”。
若再调用相关的时间日期函数,此字符串可能会被破坏。
(29):
bcmp(比较内存内容)
相关函数bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp
表头文件#include
定义函数intbcmp(constvoid*s1,constvoid*s2,intn);
函数说明bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0。
返回值若参数s1和s2所指的内存内容都完全相同则返回0值,否则返回非零值。
(30):
memccpy(拷贝内存内容)
相关函数bcopy,memcpy,memmove,strcpy,strncpy
表头文件#include
定义函数void*memccpy(void*dest,constvoid*src,intc,size_tn);
函数说明memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。
与memcpy()不同的是,memccpy()会在复制时检查参数c是否出现,若是则返回dest中值为c的下一个字节地址。
返回值返回指向dest中值为c的下一个字节指针。
返回值为0表示在src所指内存前n个字节中没有值为c的字节。
(31):
memchr(在某一内存范围中查找一特定字符)
相关函数index,rindex,strchr,strpbrk,strrchr,strsep,strspn,strstr
表头文件#include
定义函数void*memchr(constvoid*s,intc,size_tn);
函数说明memchr()从头开始搜寻s所指的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字节的指针。
返回值如果找到指定的字节则返回该字节的指针,否则返回0。
(32):
memcmp(比较内存内容)
相关函数bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp
表头文件#include
定义函数intmemcmp(constvoid*s1,constvoid*s2,size_tn);
函数说明memcmp()用来比较s1和s2所指的内存区间前n个字符。
字符串大小的比较是以ASCII码表上的顺序来决定,次顺序亦为字符的值。
memcmp()首先将s1第一个字符值减去s2第一个字符的值,若差为0则再继续比较下个字符,若差值不为0则将差值返回。
例如,字符串"Ac"和"ba"比较则会返回字符'A'(65)和'b'(98)的差值(-33)。
返回值若参数s1和s2所指的内存内容都完全相同则返回0值。
s1若大于s2则返回大于0的值。
s1若小于s2则返回小于0的值。
(33):
memcpy(拷贝内存内容)
相关函数bcopy,memccpy,memcpy,memmove,strcpy,strncpy
表头文件#include
定义函数void*memcpy(void*dest,constvoid*src,size_tn);
函数说明memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。
与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束。
返回值返回指向dest的指针。
(34):
memmove(拷贝内存内容)
相关函数bcopy,memccpy,memcpy,strcpy,strncpy
表头文件#include
定义函数void*memmove(void*dest,constvoid*src,size_tn);
函数说明memmove()与memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址上。
不同的是,当src和dest所指的内存区域重叠时,memmove()仍然可以正确的处理,不过执行效率上会比使用memcpy()略慢些。
返回值返回指向dest的指针。
(35):
memset(将一段内存空间填入某值)
相关函数bzero,swab
表头文件#include
定义函数void*memset(void*s,intc,size_tn);
函数说明memset()会将参数s所指的内存区域前n个字节以参数c填入,然后返回指向s的指针。
在编写程序时,若需要将某一数组作初始化,memset()会相当方便。
返回值返回指向s的指针。
(36):
rindex(查找字符串中最后一个出现的指定字符)
相关函数index,memchr,strchr,strrchr
表头文件#include
定义函数char*rindex(constchar*s,intc);
函数说明rindex()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。
字符串结束字符(NULL)也视为字符串一部分。
返回值如果找到指定的字符则返回该字符所在的地址,否则返回0。
p=rindex(s,'5');
(37):
strcmp(比较字符串)
相关函数bcmp,memcmp,strcasecmp,strncasecmp,strcoll
表头文件#include
定义函数intstrcmp(constchar*s1,constchar*s2);
函数说明strcmp()用来比较参数s1和s2字符串。
字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。
strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。
例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
返回值若参数s1和s2字符串相同则返回0。
s1若大于s2则返回大于0的值。
s1若小于s2则返回小于0的值。
(38):
strcoll(采用目前区域的字符排列次序来比较字符串)
相关函数strcmp,bcmp,memcmp,strcasecmp,strncasecmp
表头文件#include
定义函数intstrcoll(constchar*s1,constchar*s2);
函数说明strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较s1和s2字符串。
返回值若参数s1和s2字符串相同则返回0。
s1若大于s2则返回大于0的值。
s1若小于s2则返回小于0的值
(39):
strcpy(拷贝字符串)
相关函数bcopy,memcpy,memccpy,memmove
表头文件#include
定义函数char*str