C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 3193|回复: 45

Linux C 函数参考   [复制链接]

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:20:24 |显示全部楼层

isalnum(测试字符是否为英文或数字)


相关函数

isalphaisdigitislowerisupper

表头文件

#include<ctype.h>

定义函数

int isalnum (int c)

函数说明

检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用(isalpha( c )|| isdigit( c ))做测试。

返回值

若参数c为字母或数字,则返回TRUE,否则返回NULL( 0 )

附加说明

此为宏定义,非真正函数。

范例


/* 找出str 字符串中为英文字母或数字的字符 */
#include < ctype.h>
main()
{

char str[]=”123c@#FDsP[e?”;


int i;

for (i=0;str!=0;i++ )

if ( isalnum(str)) printf(“%c is an alphanumeric character\n”,str);

}

执行


1 is an apphabetic character
2 is an apphabetic character
3 is an apphabetic character
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




isalpha (测试字符是否为英文字母)


相关函数

isalnumislowerisupper

表头文件

#include<ctype.h>

定义函数

int isalpha (int c)

函数说明

检查参数c是否为英文字母,在标准c中相当于使用 isupperc||islowerc))做测试。

返回值

若参数c为英文字母,则返回TRUE,否则返回NULL( 0 )

附加说明

此为宏定义,非真正函数

范例


/* 找出str 字符串中为英文字母的字符*/
#include <ctype.h>
main()
{

char str[]=”123c@#FDsP[e?”;


int i;


for (i=0;str!=0;i++)


if(isalpha(str)) printf(“%c is an alphanumeric character\n”,str);

}

执行


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

定义函数

int isascii(int c);

函数说明

检查参数c是否为ASCII码字符,也就是判断c的范围是否在0127之间。

返回值

若参数cASCII码字符,则返回TRUE,否则返回NULL 0 )。

附加说明

此为宏定义,非真正函数。

范例


/* 判断int i是否具有对映的ASCII码字符 */
#include<ctype.h>
main()
{

int i;


for(i=125;i<130;i++)


if(isascii(i))


printf("%d is an ascii character:%c\n",i,i);


else


printf("%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 <ctype.h>

定义函数

int iscntrl(int c)

函数说明

检查参数c是否为ASCII控制码,也就是判断c的范围是否在030之间

返回值

若参数cASCII控制码,则返回TRUE,否则返回NULL0)。

附加说明

此为宏定义,非真正函数。



isdigit(测试字符是否为阿拉伯数字)


相关函数

isxdigit

表头文件

#include<ctype.h>

定义函数

int isdigit(int c)

函数说明

检查参数c是否为阿拉伯数字09

返回值

若参数c为阿拉伯数字,则返回TRUE,否则返回NULL0)。

附加说明

此为宏定义,非真正函数。

范例


/* 找出str字符串中为阿拉伯数字的字符 */
#include<ctype.h>
main()
{

char str[]="123@#FDsP[e?";


int i;


for(i=0;str!=0;i++)


if(isdigit(str)) printf("%c is an digit character\n",str);

}

执行


1 is an digit character
2 is an digit character
3 is an digit character


isgraphis(测试字符是否为可打印字符)


相关函数

isprint

表头文件

#include <ctype.h>

定义函数

int isgraph (int c)

函数说明

检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE

返回值

若参数c为可打印字符,则返回TRUE,否则返回NULL0)。

附加说明

此为宏定义,非真正函数

范例


/* 判断str字符串中哪些为可打印字符 */
#include<ctype.h>
main()
{

char str[]="a5 @;";


int i;


for(i=0;str!=0;i++)


if(isgraph(str)) printf("str[%d] is printable character:%d\n",i,str);

}

执行


str[0] is printable character:a
str[1] is printable character:5
str[3] is printable character
str[4] is printable character:;

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:20:37 |显示全部楼层
islower(测试字符是否为小写字母)

相关函数        isalpha,isupper
表头文件        #include<ctype.h>
定义函数        int islower(int c)
函数说明        检查参数c是否为小写英文字母。
返回值        若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数。

范例       
#include<ctype.h>
main()
{  
  char str[]="123@#FDsP[e?";  
  int i;  
  for(i=0;str[i]!=0;i++)   
   if(islower(str[i])) printf("%c is a lower-case character\n",str[i]);
}
执行       
c is a lower-case character
s is a lower-case character
e is a lower-case character

isprint(测试字符是否为可打印字符)

相关函数        isgraph
表头文件        #include<ctype.h>
定义函数        int isprint(int c);
函数说明        检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。
返回值        若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数。

范例       
/* 判断str字符串中哪些为可打印字符 包含空格字符*/
#include<ctype.h>
main()
{
  char str[]="a5 @;";
  int i;
  for(i=0;str[i]!=0;i++)
    if(isprint(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[2] is printable character:
str[3] is printable character
str[4] is printable character:;

isspace(测试字符是否为空格字符)

相关函数        isgraph
表头文件        #include<ctype.h>
定义函数        int isspace(int c)
函数说明        检查参数c是否为空格字符,也就是判断是否为空格(’’)、定位字符(’\t’)、CR(’\r’)、换行(’\n’)、垂直定位字符(’\v’)或翻页(’\f’)的情况。
返回值        若参数c为空格字符,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数

范例

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:20:48 |显示全部楼层
/*将字符串str[]中内含的空格字符找出,并显示空格字符的ASCII码*/
#include <ctype.h>
main()
{
  char str="123c @# FD\tsP[e?\n";
  int i;
  for(i=0;str[i]!=0;i++)
   if(isspace(str[i]))
     printf("str[%d] is a white-space character:%d\n",i,str[i]);
}
执行       
str[4] is a white-space character: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<ctype.h>
定义函数        int ispunct (int c)
函数说明        检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。
返回值        若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数

范例       
/*列出字符串str中的标点符号或特殊符号*/
#include <ctype.h>
main()
{
  char str[]="123c@ #FDsP[e?";
  int i;
  for(i=0;str[i]!=0;i++)
   if(ispunct(str[i])) printf("%c\n",str[i]);
}
执行       
@#[?

isupper(测试字符是否为大写英文字母)

相关函数        isalpha,islower
表头文件        #include<ctype.h>
定义函数        int isupper(int c)
函数说明        检查参数c是否为大写英文字母。
返回值        若参数c为大写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数

范例       
/*找出字符串str中为大写英文字母的字符*/
#include <ctype.h>
main()
{
  char str[]="123c@#FDsP[e?";
  int i;
  for(i=0;str[i]!=0;i++)
   if(isupper(str[i])) printf("%c is an uppercase character\n",str[i]);
}
执行       
F is an uppercase character
D is an uppercase character
P is an uppercase character

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:21:02 |显示全部楼层
isxdigit(测试字符是否为16进制数字)

相关函数        isalnum,isdigit
表头文件        #include<ctype.h>
定义函数        int isxdigit (int c)
函数说明        检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF
返回值        若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。
附加说明        此为宏定义,非真正函数。

范例       
/*找出字符串str中为十六进制数字的字符*/
#include <ctype.h>
main()
{
  char str[]="123c@#FDsP[e?";
  int i;
  for(i=0;str[i]!=0;i++)
   if(isxdigit(str[i])) printf("%c is a hexadecimal digits\n",str[i]);
}
执行       
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 <stdlib.h>
定义函数        double atof(const char *nptr);
函数说明        atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
返回值        返回转换后的浮点型数。
附加说明        atof()与使用strtod(nptr,(char**)NULL);结果相同。

范例       
/* 将字符串a与字符串b转换成数字后相加*/
#include<stdlib.h>
main()
{
char *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<stdlib.h>
定义函数        int atoi(const char *nptr);

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:21:15 |显示全部楼层
函数说明        atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。
返回值        返回转换后的整型数。
附加说明        atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。

范例       
/* 将字符串a与字符串b转换成数字后相加 */
#include<stdlib.h>
mian()
{
  char a[]=”-100”;
  char b[]=”456”;
  int c;
  c=atoi(a)+atoi(b);
  printf(c=%d\n”,c);
}
执行       
c=356

atol(将字符串转换成长整型数)

相关函数        atof,atoi,strtod,strtol,strtoul
表头文件        #include<stdlib.h>
定义函数        long atol(const char *nptr);
函数说明        atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。
返回值        返回转换后的长整型数。
附加说明        atol()与使用strtol(nptr,(char**)NULL,10);结果相同。

范例       
/*将字符串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()。

范例

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:22:03 |显示全部楼层
/*将字符串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()

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:22:14 |显示全部楼层
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值返回。
附加说明       

范例

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:22:27 |显示全部楼层
/* 将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( ) );
}

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:22:41 |显示全部楼层
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);
}

Rank: 3Rank: 3

主题
0
帖子
174
C币
956 枚
在线时间
32 小时
发表于 2010-3-12 11:22:52 |显示全部楼层
执行       
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 perator : /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
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-6 13:43

©2009-2011 cyuyan.com.cn

回顶部