分享
 
 
 

linux 下C函数部分(2)

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

范例

/*将字符串a与字符串b转换成数字后相加*/

#include<stdlib.h>

main()

{

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<stdlib.h>

定义函数

char *gcvt(double number,size_t ndigits,char *buf);

函数说明

gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。

返回值

返回一字符串指针,此地址即为buf指针。

附加说明

范例

#include<stdlib.h>

main()

{

double a=123.45;

double b=-1234.56;

char *ptr;

int decpt,sign;

gcvt(a,5,ptr);

printf(“a value=%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<stdlib.h>

定义函数

double strtod(const char *nptr,char **endptr);

函数说明

strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。

返回值

返回转换后的浮点型数。

附加说明

参考atof()。

范例

/*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/

#include<stdlib.h>

mian()

{

char a[]=”1000000000”;

char b[]=”1000000000”;

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<stdlib.h>

定义函数

long int strtol(const char *nptr,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中的字符指针由endptr返回。

返回值

返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。

附加说明

ERANGE指定的转换字符串超出合法范围。

范例

/* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/

#include<stdlib.h>

main()

{

char a[]=”1000000000”;

char b[]=”1000000000”;

char c[]=”ffff”;

printf(“a=%d\n”,strtol(a,NULL,10));

printf(“b=%d\n”,strtol(b,NULL,2));

printf(“c=%d\n”,strtol(c,NULL,16));

}

执行

a=1000000000

b=512

c=65535

strtoul(将字符串转换成无符号长整型数)

相关函数

atof,atoi,atol,strtod,strtol

表头文件

#include<stdlib.h>

定义函数

unsigned long int strtoul(const char *nptr,char **endptr,int base);

函数说明

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返回。

返回值

返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。

附加说明

ERANGE指定的转换字符串超出合法范围。

范例

参考strtol()

toascii(将整型数转换成合法的ASCII 码字符)

相关函数

isascii,toupper,tolower

表头文件

#include<ctype.h>

定义函数

int toascii(int c)

函数说明

toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。

返回值

将转换成功的ASCII码字符值返回。

范例

#include<stdlib.h>

main()

{

int a=217;

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<stdlib.h>

定义函数

int tolower(int c);

函数说明

若参数c为大写字母则将该对应的小写字母返回。

返回值

返回转换后的小写字母,若不须转换则将参数c值返回。

附加说明

范例

/* 将s字符串内的大写字母转换成小写字母*/

#include<ctype.h>

main()

{

char s[]=”aBcDeFgH12345;!#$”;

int i;

printf(“before tolower() : %s\n”,s);

for(i=0;I<sizeof(s);i++)

s[i]=tolower(s[i]);

printf(“after tolower() : %s\n”,s);

}

执行

before tolower() : aBcDeFgH12345;!#$

after tolower() : abcdefgh12345;!#$

toupper(将小写字母转换成大写字母)

相关函数

isalpha,tolower

表头文件

#include<ctype.h>

定义函数

int toupper(int c);

函数说明

若参数c为小写字母则将该对映的大写字母返回。

返回值

返回转换后的大写字母,若不须转换则将参数c值返回。

附加说明

范例

/* 将s字符串内的小写字母转换成大写字母*/

#include<ctype.h>

main()

{

char s[]=”aBcDeFgH12345;!#$”;

int i;

printf(“before toupper() : %s\n”,s);

for(i=0;I<sizeof(s);i++)

s[i]=toupper(s[i]);

printf(“after toupper() : %s\n”,s);

}

执行

before toupper() : aBcDeFgH12345;!#$

after toupper() : ABCDEFGH12345;!#$

calloc(配置内存空间)

相关函数

malloc,free,realloc,brk

表头文件

#include <stdlib.h>

定义函数

void *calloc(size_t nmemb,size_t size);

函数说明

calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。

返回值

若配置成功则返回一指针,失败则返回NULL。

范例

/* 动态配置10个struct test 空间*/

#include<stdlib.h>

struct test

{

int a[10];

char b[20];

}

main()

{

struct test *ptr=calloc(sizeof(struct test),10);

}

free(释放原先配置的内存)

相关函数

malloc,calloc,realloc,brk

表头文件

#include<stdlib.h>

定义函数

void free(void *ptr);

函数说明

参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。

getpagesize(取得内存分页大小)

相关函数

sbrk

表头文件

#include<unistd.h>

定义函数

size_t getpagesize(void);

函数说明

返回一分页的大小,单位为字节(byte)。此为系统的分页大小,不一定会和硬件分页大小相同。

返回值

内存分页大小。附加说明在Intel x86 上其返回值应为4096bytes。

范例

#include <unistd.h>

main()

{

printf(“page size = %d\n”,getpagesize( ) );

}

malloc(配置内存空间)

相关函数

calloc,free,realloc,brk

表头文件

#include<stdlib.h>

定义函数

void * malloc(size_t size);

函数说明

malloc()用来配置内存空间,其大小由指定的size决定。

返回值

若配置成功则返回一指针,失败则返回NULL。

范例

void p = malloc(1024); /*配置1k的内存*/

mmap(建立内存映射)

相关函数

munmap,open

表头文件

#include <unistd.h>

#include <sys/mman.h>

定义函数

void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);

函数说明

mmap()用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。参数start指向欲对应的内存起始地址,通常设为NULL,代表让系统自动选定地址,对应成功后该地址会返回。参数length代表将文件中多大的部分对应到内存。

参数

prot代表映射区域的保护方式有下列组合

PROT_EXEC 映射区域可被执行

PROT_READ 映射区域可被读取

PROT_WRITE 映射区域可被写入

PROT_NONE 映射区域不能存取

参数

flags会影响映射区域的各种特性

MAP_FIXED 如果参数start所指的地址无法成功建立映射时,则放弃映射,不对地址做修正。通常不鼓励用此旗标。

MAP_SHARED对映射区域的写入数据会复制回文件内,而且允许其他映射该文件的进程共享。

MAP_PRIVATE 对映射区域的写入操作会产生一个映射文件的复制,即私人的“写入时复制”(copy on write)对此区域作的任何修改都不会写回原来的文件内容。

MAP_ANONYMOUS建立匿名映射。此时会忽略参数fd,不涉及文件,而且映射区域无法和其他进程共享。

MAP_DENYWRITE只允许对映射区域的写入操作,其他对文件直接写入的操作将会被拒绝。

MAP_LOCKED 将映射区域锁定住,这表示该区域不会被置换(swap)。

在调用mmap()时必须要指定MAP_SHARED 或MAP_PRIVATE。参数fd为open()返回的文件描述词,代表欲映射到内存的文件。参数offset为文件映射的偏移量,通常设置为0,代表从文件最前方开始对应,offset必须是分页大小的整数倍。

返回值

若映射成功则返回映射区的内存起始地址,否则返回MAP_FAILED(-1),错误原因存于errno 中。

错误代码

EBADF 参数fd 不是有效的文件描述词

EACCES 存取权限有误。如果是MAP_PRIVATE 情况下文件必须可读,使用MAP_SHARED则要有PROT_WRITE以及该文件要能写入。

EINVAL 参数start、length 或offset有一个不合法。

EAGAIN 文件被锁住,或是有太多内存被锁住。

ENOMEM 内存不足。

范例

/* 利用mmap()来读取/etc/passwd 文件内容*/

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<unistd.h>

#include<sys/mman.h>

main()

{

int fd;

void *start;

struct stat sb;

fd=open(“/etc/passwd”,O_RDONLY); /*打开/etc/passwd*/

fstat(fd,&sb); /*取得文件大小*/

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

adm : x : 3 : 4 : adm : /var/adm :

lp : x :4 :7 : lp : /var/spool/lpd :

sync : x : 5 : 0 : sync : /sbin : bin/sync :

shutdown : x : 6 : 0 : shutdown : /sbin : /sbin/shutdown

halt : x : 7 : 0 : halt : /sbin : /sbin/halt

mail : x : 8 : 12 : mail : /var/spool/mail :

news : x :9 :13 : news : /var/spool/news :

uucp : x :10 :14 : uucp : /var/spool/uucp :

operator : x : 11 : 0 :operator : /root:

games : x : 12 :100 : games :/usr/games:

gopher : x : 13 : 30 : gopher : /usr/lib/gopher-data:

ftp : x : 14 : 50 : FTP User : /home/ftp:

nobody : x :99: 99: Nobody : /:

xfs :x :100 :101 : X Font Server : /etc/xll/fs : /bin/false

gdm : x : 42 :42 : : /home/gdm: /bin/bash

kids : x : 500 :500 :/home/kids : /bin/bash

munmap(解除内存映射)

相关函数

mmap

表头文件

#include<unistd.h>

#include<sys/mman.h>

定义函数

int munmap(void *start,size_t length);

函数说明

munmap()用来取消参数start所指的映射内存起始地址,参数length则是欲取消的内存大小。当进程结束或利用exec相关函数来执行其他程序时,映射内存会自动解除,但关闭对应的文件描述词时不会解除映射。

返回值

如果解除映射成功则返回0,否则返回-1,错误原因存于errno中错误代码EINVAL

参数

start或length 不合法。

范例

参考mmap()

asctime(将时间和日期以字符串格式表示)

相关函数

time,ctime,gmtime,localtime

表头文件

#include<time.h>

定义函数

char * asctime(const struct tm * timeptr);

函数说明

asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n”

返回值

若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。

附加说明

返回一字符串表示目前当地的时间日期。

范例

#include <time.h>

main()

{

time_t timep;

time (&timep);

printf(“%s”,asctime(gmtime(&timep)));

}

执行

Sat Oct 28 02:10:06 2000

ctime(将时间和日期以字符串格式表示)

相关函数

time,asctime,gmtime,localtime

表头文件

#include<time.h>

定义函数

char *ctime(const time_t *timep);

函数说明

ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Wed Jun 30 21 :49 :08 1993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

返回值

返回一字符串表示目前当地的时间日期。

范例

#include<time.h>

main()

{

time_t timep;

time (&timep);

printf(“%s”,ctime(&timep));

}

执行

Sat Oct 28 10 : 12 : 05 2000

gettimeofday(取得目前的时间)

相关函数

time,ctime,ftime,settimeofday

表头文件

#include <sys/time.h>

#include <unistd.h>

定义函数

int gettimeofday ( struct timeval * tv , struct timezone * tz )

第一頁    上一頁    第2頁/共20頁    下一頁    最後頁
第01頁 第02頁 第03頁 第04頁 第05頁 第06頁 第07頁 第08頁 第09頁 第10頁 
第11頁 第12頁 第13頁 第14頁 第15頁 第16頁 第17頁 第18頁 第19頁 第20頁 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有