版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
LinuxC函數(shù)參考
isalnum(測試字符是否為英文或數(shù)字)
相關(guān)函數(shù)isalpha,isdigit,islower,isupper
表頭文件#include<ctype.h>
定義函數(shù)intisalnum(intc)
檢查參數(shù)c是否為英文字母或阿拉伯?dāng)?shù)字,在標(biāo)準(zhǔn)c中相當(dāng)于使用
函數(shù)說明
(isalpha(c)11isdigit(c))做測試。
返回值若參數(shù)c為字母或數(shù)字,貝IJ返回TRUE,否則返回NULL(O)。
附加說明此為宏定義,非真正函數(shù)。
范例
/*找出str字符串中為英文字母或數(shù)字的字符*/
#include<ctype.h>
main()
(
charstr[]=,,123c@#FDsP[er;
inti;
for(i=O;str[i]!=O;i++)
if(isalnum(str[i]))printf(t4%cisanalphanumericcharacter\nM,str[i]);
)
執(zhí)行
1isanapphabeticcharacter
2isanapphabeticcharacter
3isanapphabeticcharacter
cisanapphabeticcharacter
Fisanapphabeticcharacter
Disanapphabeticcharacter
sisanapphabeticcharacter
Pisanapphabeticcharacter
eisanapphabeticcharacter
isalpha(測試字符是否為英文字母)
相關(guān)函數(shù)isalnum,islower,isupper
表頭文件#include<ctype.h>
定義函數(shù)intisalpha(intc)
檢查參數(shù)c是否為英文字母,在標(biāo)準(zhǔn)c中相當(dāng)于使用(isupper(C)
函數(shù)說明
llislower(c))做測試。
返回值若參數(shù)c為英文字母,貝1」返回TRUE,否則返回NULL(O)。
附加說明此為宏定義,非真正函數(shù)
范例
/*找出str字符串中為英文字母的字符*/
#include<ctype.h>
main()
(
charstr[]=,,123c@#FDsP[er;
inti;
for(i=O;str[i]!=O;i++)
if(isalpha(str|i]))printf(u%cisanalphanumericcharacter\nM,str[i]);
)
執(zhí)行
cisanapphabeticcharacter
Fisanapphabeticcharacter
Disanapphabeticcharacter
sisanapphabeticcharacter
Pisanapphabeticcharacter
eisanapphabeticcharacter
isascii(測試字符是否為ASCII碼字符)
相關(guān)函數(shù)iscntrl
表頭文件#include<ctype.h>
定義函數(shù)intisascii(intc);
檢查參數(shù)c是否為ASCII碼字符,也就是判斷c的范圍是否在0到
函數(shù)說明
127之間。
返回值若參數(shù)c為ASCH碼字符,則返回TRUE,否則返回NULL(0
附加說明此為宏定義,非真正函數(shù)。
范例
/*判斷inti是否具有對映的ASCII碼字符*/
#include<ctype.h>
main()
(
inti;
for(i=125;i<130;i++)
if(isascii(i))
printf(H%disanasciicharacter:%c\nn,i,i);
else
printf("%disnotanasciicharacter\n",i);
)
執(zhí)行
125isanasciicharacter:}
126isanasciicharacter:-
127isanasciicharacter:
128isnotanasciicharacter
129isnotanasciicharacter
iscntrl(測試字符是否為ASCII碼的控制字符)
相關(guān)函數(shù)isascii
表頭文件#include<ctype.h>
定義函數(shù)intiscntrl(intc);
檢查參數(shù)C是否為ASCII控制碼,也就是判斷c的范圍是否在0到
函數(shù)說明
30之間
返回值若參數(shù)c為ASCH控制碼,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)。
isdigit(測試字符是否為阿拉伯?dāng)?shù)字)
相關(guān)函數(shù)isxdigit
表頭文件#include<ctype.h>
定義函數(shù)intisdigit(intc)
函數(shù)說明檢查參數(shù)c是否為阿拉伯?dāng)?shù)字0到9o
返回值若參數(shù)c為阿拉伯?dāng)?shù)字,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)。
范例
/*找出str字符串中為阿拉伯?dāng)?shù)字的字符*/
#include<ctype.h>
main()
(
charstr[]=H123?#FDsP[e?n;
inti;
for(i=0;str[i]!=0;i++)
if(isdigit(str|i]))printf(n%cisandigitcharactertn'\strfi]);
執(zhí)行
1isandigitcharacter
2isandigitcharacter
3isandigitcharacter
isgraphis(測試字符是否為可打印字符)
相關(guān)函數(shù)isprint
表頭文件#include<ctype.h>
定義函數(shù)intisgraph(intc)
檢查參數(shù)c是否為可打印字符,若c所對映的ASCII碼可打印,且
函數(shù)說明
非空格字符則返回TRUE。
返回值若參數(shù)c為可打印字符,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)
范例
/*判斷str字符串中哪些為可打印字符*/
#include<ctype.h>
main()
(
charstr[]="a5@;M;
inti;
for(i=0;str[i]!=0;i++)
if(isgraph(str[i]))printf(',str[%d]isprintablecharacter:%d\nn,i,str[i]);
}
執(zhí)行
str[O]isprintablecharacter:a
str[l]isprintablecharacter:5
str[3]isprintablecharacter:@
str[4]isprintablecharacter:;
islower(測試字符是否為小寫字母)
相關(guān)函數(shù)isalpha,isupper
表頭文件#include<ctype.h>
定義函數(shù)intislower(intc)
函數(shù)說明檢查參數(shù)c是否為小寫英文字母。
返回值若參數(shù)c為小寫英文字母,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)。
范例
#include<ctype.h>
main()
(
charstr[]=,,123@#FDsP[e?H;
inti;
for(i=0;str[i]!=0;i++)
if(islower(str[i]))printf(M%cisalower-casecharacter\nn,str|i|);
)
執(zhí)行
cisalower-casecharacter
sisalower-casecharacter
eisalower-casecharacter
isprint(測試字符是否為可打印字符)
相關(guān)函數(shù)isgraph
表頭文件#include<ctype.h>
定義函數(shù)intisprint(intc);
檢查參數(shù)c是否為可打印字符,若c所對映的ASCII碼可打印,其
函數(shù)說明
中包含空格字符,則返回TRUE。
返回值若參數(shù)c為可打印字符,貝IJ返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)。
范例
/*判斷str字符串中哪些為可打印字符包含空格字符*/
#include<ctype.h>
main()
{
charstr[]=na5
inti;
for(i=0;str[i]!=0;i++)
if(isprint(str[i]))printf(nstr[%d]isprintablecharacter:%d\n",i,str[i]);
執(zhí)行
str[0]isprintablecharacter:a
str[l]isprintablecharacter:5
str[2]isprintablecharacter:
str[3]isprintablecharacter:@
str[4]isprintablecharacter:;
isspace(測試字符是否為空格字符)
相關(guān)函數(shù)isgraph
表頭文件#include<ctype.h>
定義函數(shù)intisspace(intc)
檢查參數(shù)c是否為空格字符,也就是判斷是否為空格(”)、定保
函數(shù)說明符(*)、CR「\r》順('\n)垂直定位字符(W)或蹶:(W)
的情況。
返回值若參數(shù)c為空格字符,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)
范例
/*將字符串str[]中內(nèi)含的空格字符找出,并顯示空格字符的ASCH碼*/
#include<ctype.h>
main()
charstr="123c@#FD\tsP[e?\nu;
inti;
for(i=0;str[i]!=0;i++)
if(isspace(str[i]))
printf(nstr[%djisawhite-spacecharacter:%d\nn,i,str[i]);
)
執(zhí)行I
str[4]isawhite-spacecharacter:32
str[7]isawhite-spacecharacter:32
str[10]isawhite-spacecharacter:9/*\t*/
str[16]isawhite-spacecharacter:10/*\t*/
ispunct(測試字符是否為標(biāo)點符號或特殊符號)
相關(guān)函數(shù)isspace,isdigit,isalpha
表頭文件#inlude<ctype.h>
定義函數(shù)intispunct(intc)
檢查參數(shù)c是否為標(biāo)點符號或特殊符號。返回TRUE也就是代表參
函數(shù)說明
數(shù)c為非空格、非數(shù)字和非英文字母。
若參數(shù)c為標(biāo)點符號或特殊符號,則返回TRUE,否則返回NULL
返回值
(0)?
附加說明此為宏定義,非真正函數(shù)
范例
/*列出字符串str中的標(biāo)點符號或特殊符號*/
#include<ctype.h>
main()
(
charstr[]=u123c@#FDsP[e?H;
inti;
for(i=0;str[i]!=0;i++)
if(ispunct(str[i]))printf(n%c\n",str[i]);
執(zhí)行
@#[?
isupper(測試字符是否為大寫英文字母)
相關(guān)函數(shù)isalpha,islower
表頭文件#include<ctype.h>
定義函數(shù)intisupper(intc)
函數(shù)說明檢查參數(shù)c是否為大寫英文字母。
返回值若參數(shù)C為大寫英文字母,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)
范例
/*找出字符串str中為大寫英文字母的字符*/
#include<ctype.h>
main()
|
charstr[]=H123c@#FDsP[e?H;
inti;
for(i=O;str[i]!=0;i++)
if(isupper(str[i]))printf(M%cisanuppercasecharacter\nn,str[i]);
)
執(zhí)行
Fisanuppercasecharacter
Disanuppercasecharacter
Pisanuppercasecharacter
isxdigit(測試字符是否為16進制數(shù)字)
相關(guān)函數(shù)isalnum,isdigit
表頭文件#include<ctype.h>
定義函數(shù)intisxdigit(intc)
檢查參數(shù)C是否為16進制數(shù)字,只要c為下列其中一個情況則返回
函數(shù)說明
TRUEo16進制數(shù)字:0123456789ABCDEF
返回值若參數(shù)c為16進制數(shù)字,則返回TRUE,否則返回NULL(0)。
附加說明此為宏定義,非真正函數(shù)。
范例
/*找出字符串str中為十六進制數(shù)字的字符*/
#include<ctype.h>
main()
(
charstr[]=n123c@#FDsP[e?n;
inti;
for(i=0;str[i]!=0;i++)
if(isxdigit(str|i]))printf(n%cisahexadecimaldigits\nH,str[i]);
)
執(zhí)行
1isahexadecimaldigits
2isahexadecimaldigits
3isahexadecimaldigits
cisahexadecimaldigits
Fisahexadecimaldigits
Disahexadecimaldigits
eisahexadecimaldigits
atof(將字符串轉(zhuǎn)換成浮點型數(shù))
相關(guān)函數(shù)atoi,atol,strtod,strtol,strtoul
表頭文件#include<stdlib.h>
定義函數(shù)doubleatof(constchar*nptr);
atof()會掃描參數(shù)叩tr字符串,跳過前面的空格字符,直到遇上
數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時
函數(shù)說明
(VT)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)叩tr字符串可包含正負(fù)
號、小數(shù)點或E(e)來表示指數(shù)部分,如123.456或123e-2。
返回值返回轉(zhuǎn)換后的浮點型數(shù)。
附加說明atof()與使用strtod(nptr,(char**)NULL);結(jié)果相同。
范例
/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/
#include<stdlib.h>
main()
{
char00.23”;
char*b=,,200e-2M;
floatc;
c=atof(a)+atof(b);
printf("c=%.2f\n",c);
)
執(zhí)行I
c=-98.23
atoi(將字符串轉(zhuǎn)換成整型數(shù))
相關(guān)函數(shù)atof,atohatrtod,strtol,strtoul
表頭文件#include<stdlib.h>
定義函數(shù)intatoi(constchar*nptr);
atoi()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字
函數(shù)說明或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時('\0')
才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
返回值返回轉(zhuǎn)換后的整型數(shù)。
附加說明atoi()與使用strtol(nptr,(char**)NULL,10);結(jié)果相同。
范例
/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/
#include<stdlib.h>
mian()
(
char昨"-100”;
charb[]="456”;
intc;
c=atoi(a)+atoi(b);
printf(c=%d\n,,,c);
)
執(zhí)行
c=356
atol(將字符串轉(zhuǎn)換成長整型數(shù))
相關(guān)函數(shù)atof,atoi,strtod,strtol,strtoul
表頭文件#include<stdlib.h>
定義函數(shù)longatol(constchar*nptr);
atol()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字
函數(shù)說明或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時('\0')
才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
返回值返回轉(zhuǎn)換后的長整型數(shù)。
附加說明atol()與使用strtol(nptr,(char**)NULL,10);結(jié)果相同。
范例
/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/
#include<stdlib.h>
main。
char叫=”1000000000”;
charb[]="234567890”;
longc;
c=atol(a)+atol(b);
printf(uc=%d\n,,,c);
)
執(zhí)行I
c=1234567890
gCVt(將浮點型數(shù)轉(zhuǎn)換為字符串,取四舍五入)
相關(guān)函數(shù)ecvt,fcvt,sprintf
表頭文件#include<stdlib.h>
定義函數(shù)char*gcvt(doublenumber,size_tndigits,char*buf);
gcvt()用來將參數(shù)number轉(zhuǎn)換成ASCII碼字符串,參數(shù)ndigits表示
顯示的位數(shù)。gcvt()與ecvt()和fcvt()不同的地方在于,gcvt()所轉(zhuǎn)換
函數(shù)說明
后的字符串包含小數(shù)點或正負(fù)符號。若轉(zhuǎn)換成功,轉(zhuǎn)換后的字符串
會放在參數(shù)buf指針?biāo)傅目臻g。
返回值返回一字符串指針,此地址即為buf指針。
附加說明
范例
#include<stdlib.h>
main()
{
doublea=123.45;
doubleb=-1234.56;
char*ptr;
intdecpt,sign;
gcvt(a,5,ptr);
printf(4tavalue=%s\n,,,ptr);
pti^gcvt(b,6,ptr);
printf(4<bvalue=%s\n,\ptr);
)
執(zhí)行
avalue=123.45
bvalue=-1234.56
strtod(將字符串轉(zhuǎn)換成浮點數(shù))
相關(guān)函數(shù)atoi,atoLstrtod,strtol,strtoul
表頭文件#include<stdlib.h>
定義函數(shù)doublestrtod(constchar*nptr,char**endptr);
strtod。會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)
字或正負(fù)符號才開始做轉(zhuǎn)換,直到出現(xiàn)非數(shù)字或字符串結(jié)束時
(AOO才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。若endptr不為NULL,則會
函數(shù)說明
將遇到不合條件而終止的nptr中的字符指針由endptr傳回。參數(shù)
叩tr字符串可包含正負(fù)號、小數(shù)點或E(e)來表示指數(shù)部分。如
123.456或123e-2.
返回值返回轉(zhuǎn)換后的浮點型數(shù)。
附加說明參考atof()o
范例
/*將字符串a(chǎn),b,c分別采用10,2,16進制轉(zhuǎn)換成數(shù)字*/
#include<stdlib.h>
mian()
char叫=”1000000000”;
charb[]="1000000000”;
charc[]=,,ffff,;
printf(<<a=%d\n,,,strtod(a,NULL,10));
printf(4tb=%d\nn,strtod(b,NULL,2));
printf(<tc=%d\n,,,strtod(c,NULLJ6));
)
執(zhí)行I
a=1000000000
b=512
c=65535
strtol(將字符串轉(zhuǎn)換成長整型數(shù))
相關(guān)函數(shù)atof,atoi,atol,strtod,strtoul
表頭文件#include<stdlib.h>
定義函數(shù)longintstrtol(constchar*nptr,char**endptr,intbase);
strtol()會將參數(shù)nptr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成長整型數(shù)。
參數(shù)base范圍從2至36,或0。參數(shù)base代表采用的進制方式,
如base值為10則采用10進制,若base值為16則采用16進制等。
當(dāng)base值為0時則是采用10進制做轉(zhuǎn)換,但遇到如'Ox,前置字符
函數(shù)說明則會使用16進制做轉(zhuǎn)換。-開始strtol()會掃描參數(shù)nptr字符串,
跳過前面的空格字符,宜到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,再
遇到非數(shù)字或字符串結(jié)束時('\0')結(jié)束轉(zhuǎn)換,并將結(jié)果返回。若參數(shù)
endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指
針由endptr返回。
返回轉(zhuǎn)換后的長整型數(shù),否則返回ERANGE并將錯誤代碼存入
返回值
errno中。
附加說明ERANGE指定的轉(zhuǎn)換字符串超出合法范圍。
范例
/*將字符串a(chǎn),b,c分別采用10,2,16進制轉(zhuǎn)換成數(shù)字刃
#include<stdlib.h>
main。
|
char叫=”1000000000”;
charb[]="1000000000”;
charc[]=,,ffff,;
printf(<<a=%d\n,,,strtol(a,NULL,10));
printf(44b=%d\n,,,strtol(b,NULL,2));
printf(<tc=%d\n,,,strtol(c,NULL,16));
)
執(zhí)行I
a=1000000000
b=512
c=65535
strtoul(將字符串轉(zhuǎn)換成無符號長整型數(shù))
相關(guān)函數(shù)atof,atoi,atol,strtod,strtol
表頭文件#include<stdlib.h>
定義函數(shù)unsignedlongintstrtoul(constchar*nptr,char**endptr,intbase);
strtoul。會將參數(shù)叩tr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成無符號的長整
型數(shù)。參數(shù)base范圍從2至36,或0。參數(shù)base代表采用的進制
方式,如base值為10則采用10進制,若base值為16則采用16
進制數(shù)等。當(dāng)base值為0時則是采用10進制做轉(zhuǎn)換,但遇到如'Ox,
函數(shù)說明前置字符則會使用16進制做轉(zhuǎn)換。一開始strtoul()會掃描參數(shù)
nptr字符串,跳過前面的空格字符串,直到遇上數(shù)字或正負(fù)符號才
開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時('\0')結(jié)束轉(zhuǎn)換,并
將結(jié)果返回。若參數(shù)endptr不為NULL,則會將遇到不合條件而終
止的nptr中的字符指針由endptr返回。
返回轉(zhuǎn)換后的長整型數(shù),否則返回ERANGE并將錯誤代碼存入
返回值
errno中。
附加說明ERANGE指定的轉(zhuǎn)換字符串超出合法范圍。
范例
參考strtol()
toascii(將整型數(shù)轉(zhuǎn)換成合法的ASCH碼字符)
相關(guān)函數(shù)isascii,toupper,tolower
表頭文件#include<ctype.h>
定義函數(shù)inttoascii(intc)
toascii()會將參數(shù)c轉(zhuǎn)換成7位的unsignedchar值,第八位則會
函數(shù)說明
被清除,此字符即會被轉(zhuǎn)成ASCH碼字符。
返回值將轉(zhuǎn)換成功的ASCII碼字符值返回。
范例
#include<stdlib.h>
main()
(
inta=217;
charb;
printf(4tbeforetoascii():avalue=%d(%c)\n,\a,a);
b=toascii(a);
printf(uaftertoascii():avalue=%d(%c)\n,?,b,b);
)
執(zhí)行
beforetoascii():avalue=217()
aftertoascii():avalue=89(Y)
tolower(將大寫字母轉(zhuǎn)換成小寫字母)
相關(guān)函數(shù)isalpha,toupper
表頭文件#include<stdlib.h>
定義函數(shù)inttolower(intc);
函數(shù)說明若參數(shù)C為大寫字母則將該對應(yīng)的小寫字母返回。
返回值返回轉(zhuǎn)換后的小寫字母,若不須轉(zhuǎn)換則將參數(shù)C值返回
附加說明
范例
/*將S字符串內(nèi)的大寫字母轉(zhuǎn)換成小寫字母*/
#include<ctype.h>
main()
(
chars[]二"aBcDeFgH12345;!#$'';
inti;
printf(t4beforetolower():%s\n,,,s);
fbr(i=0;I<sizeof(s);i++)
s[i]=tolower(s[i]);
printfC'aftertolower():%s\nM,s);
)
執(zhí)行
beforetolower():aBcDeFgH12345;!#$
aftertolower():abcdefghI2345;!#$
toupper(將小寫字母轉(zhuǎn)換成大寫字母)
相關(guān)函數(shù)isalpha,tolower
表頭文件#include<ctype.h>
定義函數(shù)inttoupper(intc);
函數(shù)說明若參數(shù)c為小寫字母則將該對映的大寫字母返回。
返回值返回轉(zhuǎn)換后的大寫字母,若不須轉(zhuǎn)換則將參數(shù)C值返回。
附加說明
范例
/*將S字符串內(nèi)的小寫字母轉(zhuǎn)換成大寫字母*/
#include<ctype.h>
main()
chars[]=,,aBcDeFgH12345;!#$M;
inti;
printf(ubeforetoupper():%s\n”,s);
for(i=0;l<sizeof(s);i++)
s[i]=toupper(s[i]);
printfC'aftertoupper():%s\n”,s);
)
執(zhí)行
beforetoupper():aBcDeFgH12345;!#$
aftertoupper():ABCDEFGH12345;!#$
Calloc(配置內(nèi)存空間)
相關(guān)函數(shù)malloc,free,realloc,brk
表頭文件#include<stdlib.h>
定義函數(shù)void*calloc(size_tnmemb,size_tsize);
calloc。用來配置nmemb個相鄰的內(nèi)存單位,每一單位的大小為
size,并返回指向第一個元素的指針。這和使用下列的方式效果相
函數(shù)說明
同:malloc(nmemb*size);不過,在利用calloc()配置內(nèi)存時會將內(nèi)存
內(nèi)容初始化為0o
返回值若配置成功則返回一指針,失敗則返回NULL。
范例
/*動態(tài)配置10個structtest空間*/
#include<stdlib.h>
structtest
(
inta|10];
charb[20J;
)
main()
structtest*ptr=calloc(sizeof(structtest),10);
)
free(釋放原先配置的內(nèi)存)
相關(guān)函數(shù)malloc,calloc,realloc,brk
表頭文件#include<stdlib.h>
定義函數(shù)voidfree(void*ptr);
參數(shù)ptr為指向先前由malloc0、calloc()或realloc()所返回的內(nèi)存
指針。調(diào)用free。后ptr所指的內(nèi)存空間便會被收回。假若參數(shù)ptr
函數(shù)說明所指的內(nèi)存空間已被收回或是未知的內(nèi)存地址,則調(diào)用free。可能
會有無法預(yù)期的情況發(fā)生。若參數(shù)ptr為NULL,則free。不會有任
何作用。
getpagesize(取得內(nèi)存分頁大小)
相關(guān)函數(shù)sbrk
表頭文件#include<unistd.h>
定義函數(shù)size_tgetpagesize(void);
返回一分頁的大小,單位為字節(jié)(byte)。此為系統(tǒng)的分頁大小,不
函數(shù)說明
一定會和硬件分頁大小相同。
返回值內(nèi)存分頁大小。
附加說明在Intelx86上其返回值應(yīng)為4096bytes,
范例
#include<unistd.h>
main()
printf(44pagesize=%d\n,\getpagesize());
malloc(配置內(nèi)存空間)
相關(guān)函數(shù)calloc,free,realloc,brk
表頭文件#include<stdlib.h>
定義函數(shù)void*malloc(size_tsize);
函數(shù)說明malloc()用來配置內(nèi)存空間,其大小由指定的size決定。
返回值若配置成功則返回一指針,失敗則返回NULL。
范例|
voidp=malloc(1024);/*配置1k的內(nèi)存*/
mmap(建立內(nèi)存映射)
相關(guān)函數(shù)munmap,open
#include<unistd.h>
表頭文件
#include<sys/mman.h>
void*mmap(void*start,size_tlengthjntprotjntflags,intfd,ofCl
定義函數(shù)
offsize);
mmap()用來將某個文件內(nèi)容映射到內(nèi)存中,對該內(nèi)存區(qū)域的存取即
是直接對該文件內(nèi)容的讀寫。
參數(shù)start指向欲時應(yīng)的內(nèi)存起始地址,通常設(shè)為NULL,代表讓系
統(tǒng)自動選定地址,對應(yīng)成功后該地址會返回。參數(shù)length代表將文
件中多大的部分對應(yīng)到內(nèi)存。參數(shù)prot代表映射區(qū)域的保護方式,
有下列組合:
PROT_EXEC映射區(qū)域可被執(zhí)行
函數(shù)說明PROT_READ映射區(qū)域可被讀取
PROT_WRITE映射區(qū)域可被寫入
PROT_NONE映射區(qū)域不能存取
參數(shù)flags會影響映射區(qū)域的各種特性:
MAP_FIXED如果參數(shù)start所指的地址無法成功建立映射時,
則放棄映射,不對地址做修正。通常不鼓勵用此
旗標(biāo)。
MAP_SHARED對映射區(qū)域的寫入數(shù)據(jù)會復(fù)制回文件內(nèi),而且
允許其他映射該文件的進程共享。
MAP_PRIVATE對映射區(qū)域的寫入操作會產(chǎn)生一個映射文件的
復(fù)制,即私人的“寫入時復(fù)制”(copyonwrite)
對此區(qū)域作的任何修改都不會寫回原來的文
件內(nèi)容。
MAP_ANONYMOUS建立匿名映射。此時會忽略參數(shù)fd,不涉
及文件,而且映射區(qū)域無法和其他進程共
享。
MAP_DENYWRITE只允許對映射區(qū)域的寫入操作,其他對文件
直接寫入的操作將會被拒絕。
MAP_LOCKED將映射區(qū)域鎖定住,這表示該區(qū)域不會被置換
(swap)?
在調(diào)用mmap()時必須要指定MAP_SHARED或MAP_PRIVATEo
參數(shù)fd為open。返回的文件描述詞,代表欲映射到內(nèi)存的文件。參
數(shù)offset為文件映射的偏移量,通常設(shè)置為0,代表從文件最前方
開始對應(yīng),。ffset必須是分頁大小的整數(shù)倍。
若映射成功則返回映射區(qū)的內(nèi)存起始地址,否則返回MAP_FAILED
返回值
(―1).錯誤原因存于errno中。
EBADF參數(shù)fd不是有效的文件描述詞
EACCES存取權(quán)限有誤。如果是MAP_PRIVATE情況下文件必須
可讀,使用MAP_SHARED則要有PROT_WRITE以及
錯誤代碼該文件要能寫入。
EINVAL參數(shù)start、length或offset有一個不合法。
EAGAIN文件被鎖住,或是有太多內(nèi)存被鎖住。
ENOMEM內(nèi)存不足。
范例
/*利用mmapO來讀取/etc/passwd文件內(nèi)容*/
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/mman.h>
main()
(
intfd;
void*start;
structstatsb;
fd=open(“/etc/passwd”Q_RDONLY);/*打開/etc/passwd*/
fstat(fd,&sb);/*取得文件大小*/
start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);
if(start==MAP_FAILED)/*判斷是否映射成功*/
return;
printf(t<%s^^,start);
munmap(start,sb.st_size);/*解除映射*/
close(fd);
執(zhí)行
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:
Ip:x:4:7:Ip:/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:FTPUser:/home/ftp:
nobody:x:99:99:Nobody:/:
xfs:xJOO:101:XFontServer:/etc/xll/fs:/bin/false
gdm:x:42:42::/home/gdm:/bin/bash
kids:x:500:500:/home/kids:/bin/bash
munmap(解除內(nèi)存映射)
相關(guān)函數(shù)mmap
#include<unistd.h>
表頭文件
#include<sys/mman.h>
定義函數(shù)intmunmap(void*start,size_tlength);
munmap。用來取消參數(shù)start所指的映射內(nèi)存起始地址,參數(shù)length
則是欲取消的內(nèi)存大小。當(dāng)進程結(jié)束或利用exec相關(guān)函數(shù)來執(zhí)行其
函數(shù)說明
他程序時,映射內(nèi)存會自動解除,但關(guān)閉對應(yīng)的文件描述詞時不會
解除映射。
返回值如果解除映射成功則返回0,否則返回一1,錯誤原因存于errn。中
錯誤代碼EINVAL參數(shù)start或length不合法。
范例
參考mmap()
asctime(將時間和日期以字符串格式表示)
相關(guān)函數(shù)time,ctime,gmtime,localtime
表頭文件#include<time.h>
定義函數(shù)char*asctime(conststructtm*timeptr);
asctime()將參數(shù)timeptr所指的tm結(jié)構(gòu)中的信息轉(zhuǎn)換成真實世界
所使用的時間H期表示方法,然后將結(jié)果以字符串形態(tài)返回。此函
函數(shù)說明
數(shù)已經(jīng)由時區(qū)轉(zhuǎn)換成當(dāng)?shù)貢r間,字符串格式為:
“WedJun3021:49:081993\n”
若再調(diào)用相關(guān)的時間日期函數(shù),此字符串可能會被破壞。此函數(shù)與
返回值
ctime不同處在于傳入的參數(shù)是不同的結(jié)構(gòu)。
附加說明返回一字符串表示目前當(dāng)?shù)氐臅r間日期。
范例|
#include<time.h>
main()
(
time_ttimep;
time(&timep);
printf(<*%s,\asctime(gmtime(&timep)));
執(zhí)行
SatOct2802:10:062000
ctime(將時間和日期以字符串格式表示)
相關(guān)函數(shù)time,asctime,gmtime,localtime
表頭文件#include<time.h>
定義函數(shù)char*ctime(consttime_t*timep);
ctime()將參數(shù)timep所指的time」結(jié)構(gòu)中的信息轉(zhuǎn)換成真實世界
所使用的時間日期表示方法,然后將結(jié)果以字符串形態(tài)返回。此函
函數(shù)說明
數(shù)已經(jīng)由時區(qū)轉(zhuǎn)換成當(dāng)?shù)貢r間,字符串格式為“WedJun3021:4908
1993\n\若再調(diào)用相關(guān)的時間日期函數(shù),此字符串可能會被破壞。
返回值返回一字符串表示目前當(dāng)?shù)氐臅r間日期。
范例
#include<time.h>
main()
{
time_ttimep;
time(&timep);
printf("%s”,ctime(&timep));
)
執(zhí)行
SatOct2810:12:052000
gettimeofday(取得目前的時間)
相關(guān)函數(shù)time,ctime,ftime,settimeofday
#include<sys/time.h>
表頭文件
#include<unistd.h>
定義函數(shù)intgettimeofday(structtimeval*tv,structtimezone*tz)
gettimeofday()會把目前的時間有tv所指的結(jié)構(gòu)返回,當(dāng)?shù)貢r區(qū)
的信息則放到tz所指的結(jié)構(gòu)中。timeval結(jié)構(gòu)定義為:
函數(shù)說明
structtimeval{
longtv_sec;/*秒*/
longtv_usec;/*微秒*/
);
timezone結(jié)構(gòu)定義為:
structtimezone{
inttz_minuteswest;/*和Greenwich時間差了多少分鐘*/
inttz_dsttime;/*日光節(jié)約時間的狀態(tài)*/
);
上述兩個結(jié)構(gòu)都定義在/usr/include/sys/time.h。tz_dsttime所代
表的狀態(tài)如下:
DST.NONE/*不使用*/
DST.USA/*美國*/
DST_AUST/*澳洲*/
DST_WET/*西歐*/
DST_MET/*中歐*/
DST_EET/*東歐*/
DST.CAN/*加拿大*/
DST_GB/*大不列顛*/
DST_RUM/*羅馬尼亞*/
DST_TUR/*土耳其*/
DST_AUSTALT/*澳洲(1986年以后)*/
返回值成功則返回0,失敗返回一1,錯誤代碼存于ermo。
附加說明EFAULT指針tv和tz所指的內(nèi)存空間超出存取權(quán)限。
范例
#include<sys/time.h>
#include<unistd.h>
main(){
structtimevaltv;
structtimezonetz;
gettimeofday(&tv,&tz);
printf("tv_sec;%d\n",tv,.tv_sec);
printf(4<tv_usec;%d\n,,,tv.tv_usec);
printf(<€tz_minuteswest;%d\n",tz.tz_minuteswest);
printf(<4tz_dsttime,%d\n,,,tz.tz_dsttime);
執(zhí)行
tv_sec:974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:O
gmtime(取得目前時間和日期)
相關(guān)函數(shù)time,asctime,dime,localtime
表頭文件#include<time.h>
定義函數(shù)structtm*gmtime(consttime_t*timep);
gmtime()將參數(shù)timep所指的time_t結(jié)構(gòu)中的信息轉(zhuǎn)換成真實世界
所使用的時間日期表示方法,然后將結(jié)果由結(jié)構(gòu)tm返回。結(jié)構(gòu)tm
的定義為:
structtm
{
inttm_sec;
int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人住房租賃押金合同范本4篇
- 二零二五年度美發(fā)店客戶滿意度調(diào)查與提升方案合同4篇
- 2025年度油氣田打井環(huán)境保護合同范本集4篇
- 二零二五年方木市場調(diào)研與購銷咨詢合同3篇
- 2025年度二手車貸款交易合同范本4篇
- 2025年度國際大米進口代理服務(wù)合同范本4篇
- 2025年度承包學(xué)校食堂的校園食品安全應(yīng)急處理合同3篇
- 《英文介紹蛋炒飯》課件
- 2025至2030年中國大型逆流冷卻塔數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國丙氨酰谷氨酰胺數(shù)據(jù)監(jiān)測研究報告
- 非誠不找小品臺詞
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 患者信息保密法律法規(guī)解讀
- 老年人護理風(fēng)險防控PPT
- 充電樁采購安裝投標(biāo)方案(技術(shù)方案)
- 醫(yī)院科室考勤表
- 鍍膜員工述職報告
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 保險行業(yè)加強清廉文化建設(shè)
- Hive數(shù)據(jù)倉庫技術(shù)與應(yīng)用
- 數(shù)字的秘密生活:最有趣的50個數(shù)學(xué)故事
評論
0/150
提交評論