1、
Linux C 函数参考
isalnum(测试字符是否为英文或数字)
相关函数
isalpha,isdigit,islower,isupper
表头文件
#include
2、/ #include < ctype.h> main() { char str[]=”123c@#FDsP[e?”; int i; for (i=0;str[i]!=0;i++ ) if ( isalnum(str[i])) printf(“%c is an alphanumeric character\n”,str[i]); } 执行 1 is an apphabetic character 2 is an apphabetic character 3 is an apphabetic character c is an apphabetic cha
3、racter
F is an apphabetic character
D is an apphabetic character
s is an apphabetic character
P is an apphabetic character
e is an apphabetic character
isalpha (测试字符是否为英文字母)
相关函数
isalnum,islower,isupper
表头文件
#include
4、于使用 (isupper(c)||islower(c))做测试。
返回值
若参数c为英文字母,则返回TRUE,否则返回NULL( 0 )。
附加说明
此为宏定义,非真正函数
范例
/* 找出str 字符串中为英文字母的字符*/
#include
5、}
执行
c is an apphabetic character
F is an apphabetic character
D is an apphabetic character
s is an apphabetic character
P is an apphabetic character
e is an apphabetic character
isascii(测试字符是否为ASCII码字符)
相关函数
iscntrl
表头文件
#include
6、查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。
返回值
若参数c为ASCII码字符,则返回TRUE,否则返回NULL ( 0 )。
附加说明
此为宏定义,非真正函数。
范例
/* 判断int i是否具有对映的ASCII码字符 */
#include
7、d is not an ascii character\n",i);
}
执行
125 is an ascii character:}
126 is an ascii character:~
127 is an ascii character:
128 is not an ascii character
129 is not an ascii character
iscntrl(测试字符是否为ASCII码的控制字符)
相关函数
isascii
表头文件
#include
8、说明
检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间
返回值
若参数c为ASCII控制码,则返回TRUE,否则返回NULL(0)。
附加说明
此为宏定义,非真正函数。
isdigit(测试字符是否为阿拉伯数字)
相关函数
isxdigit
表头文件
#include
9、符串中为阿拉伯数字的字符 */
#include
10、关函数
isprint
表头文件
#include
11、 if(isgraph(str[i])) printf("str[%d] is printable character:%d\n",i,str[i]);
}
执行
str[0] is printable character:a
str[1] is printable character:5
str[3] is printable character:@
str[4] is printable character:;
islower(测试字符是否为小写字母)
相关函数
isalpha,isupper
表头文件
#include
12、数
int islower(int c)
函数说明
检查参数c是否为小写英文字母。
返回值
若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明
此为宏定义,非真正函数。
范例
#include
13、
c is a lower-case character
s is a lower-case character
e is a lower-case character
isprint(测试字符是否为可打印字符)
相关函数
isgraph
表头文件
#include
14、
/* 判断str字符串中哪些为可打印字符 包含空格字符*/
#include
15、 character:
str[3] is printable character:@
str[4] is printable character:;
isspace(测试字符是否为空格字符)
相关函数
isgraph
表头文件
#include
16、说明
此为宏定义,非真正函数
范例
/*将字符串str[]中内含的空格字符找出,并显示空格字符的ASCII码*/
#include
17、32
str[7] is a white-space character:32
str[10] is a white-space character:9 /* \t */
str[16] is a white-space character:10 /* \t */
ispunct(测试字符是否为标点符号或特殊符号)
相关函数
isspace,isdigit,isalpha
表头文件
#inlude
18、非数字和非英文字母。
返回值
若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。
附加说明
此为宏定义,非真正函数
范例
/*列出字符串str中的标点符号或特殊符号*/
#include
19、
isalpha,islower
表头文件
#include
20、])) printf("%c is an uppercase character\n",str[i]);
}
执行
F is an uppercase character
D is an uppercase character
P is an uppercase character
isxdigit(测试字符是否为16进制数字)
相关函数
isalnum,isdigit
表头文件
#include
21、回TRUE。16进制数字:0123456789ABCDEF
返回值
若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。
附加说明
此为宏定义,非真正函数。
范例
/*找出字符串str中为十六进制数字的字符*/
#include
22、
1 is a hexadecimal digits
2 is a hexadecimal digits
3 is a hexadecimal digits
c is a hexadecimal digits
F is a hexadecimal digits
D is a hexadecimal digits
e is a hexadecimal digits
atof(将字符串转换成浮点型数)
相关函数
atoi,atol,strtod,strtol,strtoul
表头文件
#include
23、uble atof(const char *nptr);
函数说明
atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
返回值
返回转换后的浮点型数。
附加说明
atof()与使用strtod(nptr,(char**)NULL);结果相同。
范例
/* 将字符串a与字符串b转换成数字后相加*/
#include
24、r *a=”-100.23”;
char *b=”200e-2”;
float c;
c=atof(a)+atof(b);
printf(“c=%.2f\n”,c);
}
执行
c=-98.23
atoi(将字符串转换成整型数)
相关函数
atof,atol,atrtod,strtol,strtoul
表头文件
#include
25、时(’\0’)才结束转换,并将结果返回。
返回值
返回转换后的整型数。
附加说明
atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。
范例
/* 将字符串a与字符串b转换成数字后相加 */
#include
26、oi,strtod,strtol,strtoul
表头文件
#include
27、n()
{
char a[]=”1000000000”;
char b[]=” 234567890”;
long c;
c=atol(a)+atol(b);
printf(“c=%d\n”,c);
}
执行
c=1234567890
gcvt(将浮点型数转换为字符串,取四舍五入)
相关函数
ecvt,fcvt,sprintf
表头文件
#include
28、er转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。
返回值
返回一字符串指针,此地址即为buf指针。
附加说明
范例
#include
29、s\n”,ptr);
ptr=gcvt(b,6,ptr);
printf(“b value=%s\n”,ptr);
}
执行
a value=123.45
b value=-1234.56
strtod(将字符串转换成浮点数)
相关函数
atoi,atol,strtod,strtol,strtoul
表头文件
#include
30、负符号才开始做转换,直到出现非数字或字符串结束时(’\0’)才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
返回值
返回转换后的浮点型数。
附加说明
参考atof()。
范例
/*将字符串a,b,c分别采用10,2,16进制转换成数字*/
#include
31、 char c[]=”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));
}
执行
a=1000000000
b=512
c=65535
strtol(将字符串转换成长整型数)
相关函数
atof,atoi,atol,strtod,strtoul
表头文件
#include
32、tr,char **endptr,int base); 函数说明 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
33、中的字符指针由endptr返回。
返回值
返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
附加说明
ERANGE指定的转换字符串超出合法范围。
范例
/* 将字符串a,b,c分别采用10,2,16进制转换成数字*/
#include
34、NULL,2));
printf(“c=%d\n”,strtol(c,NULL,16));
}
执行
a=1000000000
b=512
c=65535
strtoul(将字符串转换成无符号长整型数)
相关函数
atof,atoi,atol,strtod,strtol
表头文件
#include
35、型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(’\0’)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。 返回值 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。 附加说明
36、
ERANGE指定的转换字符串超出合法范围。
范例
参考strtol()
toascii(将整型数转换成合法的ASCII码字符)
相关函数
isascii,toupper,tolower
表头文件
#include
37、17;
char b;
printf(“before toascii () : a value =%d(%c)\n”,a,a);
b=toascii(a);
printf(“after toascii() : a value =%d(%c)\n”,b,b);
}
执行
before toascii() : a value =217()
after toascii() : a value =89(Y)
tolower(将大写字母转换成小写字母)
相关函数
isalpha,toupper
表头文件
#include
38、数
int tolower(int c);
函数说明
若参数c为大写字母则将该对应的小写字母返回。
返回值
返回转换后的小写字母,若不须转换则将参数c值返回。
附加说明
范例
/* 将s字符串内的大写字母转换成小写字母*/
#include 39、er tolower() : %s\n”,s);
}
执行
before tolower() : aBcDeFgH12345;!#$
after tolower() : abcdefgh12345;!#$
toupper(将小写字母转换成大写字母)
相关函数
isalpha,tolower
表头文件
#include 40、小写字母转换成大写字母 */
#include 41、
Calloc(配置内存空间)
相关函数
malloc,free,realloc,brk
表头文件
#include 42、truct test 空间 */
#include 43、realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。
getpagesize(取得内存分页大小)
相关函数
sbrk
表头文件
#include 44、el x86上其返回值应为4096bytes。
范例
#include 45、
void p = malloc(1024); /*配置1k的内存*/
mmap(建立内存映射)
相关函数
munmap,open
表头文件
#include 46、自动选定地址,对应成功后该地址会返回。参数length代表将文件中多大的部分对应到内存。参数prot代表映射区域的保护方式,有下列组合:
PROT_EXEC 映射区域可被执行
PROT_READ 映射区域可被读取
PROT_WRITE 映射区域可被写入
PROT_NONE 映射区域不能存取
参数flags会影响映射区域的各种特性:
MAP_FIXED 如果参数start所指的地址无法成功建立映射时,
则放弃映射,不对地址做修正。通常不鼓励用此
旗标。
MAP_SHARED对映射区域的写入数据会复制回文件内,而且
允许其他映射该文件的 47、进程共享。
MAP_PRIVATE 对映射区域的写入操作会产生一个映射文件的
复制,即私人的“写入时复制”(copy on write)
对此区域作的任何修改都不会写回原来的文
件内容。
MAP_ANONYMOUS建立匿名映射。此时会忽略参数fd,不涉
及文件,而且映射区域无法和其他进程共
享。
MAP_DENYWRITE只允许对映射区域的写入操作,其他对文件
直接写入的操作将会被拒绝。
MAP_LOCKED 将映射区域锁定住,这表示该区域不会被置换
(swap)。
在调用mmap()时必须要指定MAP_SHARED或MAP_PRIVATE。参数fd为 48、open()返回的文件描述词,代表欲映射到内存的文件。参数offset为文件映射的偏移量,通常设置为0,代表从文件最前方开始对应,offset必须是分页大小的整数倍。
返回值
若映射成功则返回映射区的内存起始地址,否则返回MAP_FAILED(-1),错误原因存于errno中。
错误代码
EBADF 参数fd不是有效的文件描述词
EACCES 存取权限有误。如果是MAP_PRIVATE情况下文件必须
可读,使用MAP_SHARED则要有PROT_WRITE以及该文件要能写入。
EINVAL 参数 start、length或offset有一个不合法。
EAGAIN 文件被锁住 49、或是有太多内存被锁住。
ENOMEM 内存不足。
范例
/* 利用mmap()来读取/etc/passwd文件内容*/
#include 50、大小*/
start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);
if(start= = MAP_FAILED) /*判断是否映射成功*/
return;
printf(“%s”,start);
munma(start,sb.st_size); /*解除映射*/
closed(fd);
}
执行
root : x : 0 : root : /root : /bin/bash
bin : x : 1: 1 : bin : /bin :
daemon : x : 2 : 2 :daemon : /sbin
a






