久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > C語言常用函數用法(fa)大(da)全(quan)

C語言常(chang)用函(han)數用法大全 時間:2018-01-04      來(lai)源:未知

C語(yu)(yu)言(yan)(yan)(yan)是當(dang)中(zhong)廣(guang)泛的(de)(de)計(ji)算(suan)(suan)機(ji)編(bian)程(cheng)語(yu)(yu)言(yan)(yan)(yan),是所有(you)計(ji)算(suan)(suan)機(ji)編(bian)程(cheng)語(yu)(yu)言(yan)(yan)(yan)的(de)(de)祖先,其他計(ji)算(suan)(suan)機(ji)編(bian)程(cheng)語(yu)(yu)言(yan)(yan)(yan)包括當(dang)前流行(xing)的(de)(de)Java語(yu)(yu)言(yan)(yan)(yan),都是用C語(yu)(yu)言(yan)(yan)(yan)實(shi)現(xian)的(de)(de),C語(yu)(yu)言(yan)(yan)(yan)是編(bian)程(cheng)效率高(gao)的(de)(de)計(ji)算(suan)(suan)機(ji)語(yu)(yu)言(yan)(yan)(yan),既能(neng)完(wan)成上層(ceng)應(ying)用開發(fa),也能(neng)完(wan)成底(di)層(ceng)硬件(jian)驅(qu)動編(bian)程(cheng),在計(ji)算(suan)(suan)機(ji)程(cheng)序設計(ji)當(dang)中(zhong),特別是在底(di)層(ceng)硬件(jian)驅(qu)動開發(fa)當(dang)中(zhong),具(ju)有(you)不可替代的(de)(de)作用。在C語(yu)(yu)言(yan)(yan)(yan)學(xue)(xue)習過程(cheng)當(dang)中(zhong),除了學(xue)(xue)習好C語(yu)(yu)言(yan)(yan)(yan)基(ji)本(ben)語(yu)(yu)法外,掌握常(chang)用的(de)(de)C語(yu)(yu)言(yan)(yan)(yan)庫(ku)函(han)數(shu)的(de)(de)使用也是非常(chang)重要(yao)的(de)(de),本(ben)文主要(yao)給同學(xue)(xue)們詳細(xi)講解在實(shi)際項目開發(fa)過程(cheng)中(zhong)常(chang)用C語(yu)(yu)言(yan)(yan)(yan)函(han)數(shu)的(de)(de)用法。

1 printf 函數

函數原型(xing):int printf(const char *format,[argument]);

功(gong)能:實現格式(shi)化輸入輸出

返(fan)回(hui)值:實(shi)際輸出(chu)的字(zi)符個數(shu)

函數(shu)參(can)數(shu):format 格式化字符(fu)串

argument 要輸出(chu)的參數

常用的格式化(hua)類型有:

d 有符號10進制整數

o 無(wu)符號8進制(zhi)整數

u 無符號10進制整數

x 無(wu)符號(hao)的16進(jin)制數字(zi),并以小寫abcdef表示

X 無(wu)符號的16進制數字,并以大(da)寫ABCDEF表(biao)示

f 浮點數

c 單個字符

s 字符串

p 顯(xian)示(shi)(shi)一個指(zhi)(zhi)針,near指(zhi)(zhi)針表示(shi)(shi)為:XXXX,far指(zhi)(zhi)針表示(shi)(shi)為:XXXX:YYYY

用法舉例:

以(yi)10進制形(xing)式輸出(chu)整形(xing)變(bian)量(liang)a的(de)值;

int a = 100;

printf("a=%d\n", a);

上面程序的執行結(jie)果為:在屏幕終端輸出 a=100

2 fprintf函數

函數(shu)原型:int fprintf (FILE* stream, const char*format, [argument])

功能:將按照格式化字符(fu)串格式化后(hou)的數據(ju)輸出到文件流stream中,

返回值:實際寫入(ru)到(dao)文(wen)件的字符個數

函數參數:stream 要(yao)輸出的文件流指(zhi)針(zhen)

format 格式化字符串

argument 要輸出(chu)的參數

備注:fprintf和printf函(han)數非(fei)常(chang)類似,使用方法也相同,它們不同之處在于printf函(han)數是(shi)輸(shu)出(chu)(chu)結(jie)果(guo)(guo)到(dao)標(biao)準輸(shu)出(chu)(chu)終(zhong)端,一(yi)般為(wei)屏(ping)幕,而fprintf是(shi)將(jiang)結(jie)果(guo)(guo)輸(shu)出(chu)(chu)到(dao)指定的文(wen)件流(liu);如果(guo)(guo)將(jiang)參(can)數輸(shu)出(chu)(chu)文(wen)件流(liu)stream設置為(wei)標(biao)準輸(shu)出(chu)(chu)流(liu)stdout,則與(yu)printf函(han)數等(deng)效,如下所示(shi):

fprintf (stdout, const char*format, [argument])

用法舉例:

例如:將一個格式(shi)化字(zi)符串(chuan)寫入到文件file1.txt中

FILE *fp = fopen("file1.txt","wb");

int count = 190;

fprintf(fp,"hello :%d\n", count);

上面程序(xu)的執(zhi)行結果為(wei)往file1.txt文(wen)件中寫入 "hello :190" 字符串.

3 sprintf 函數

函數原型:int sprintf (char* buffer, const char*format, [argument])

功能:將按(an)照(zhao)格式(shi)化字符串格式(shi)化后的數據輸出到字符串buffer中

返回(hui)值:實際輸出到字(zi)符串buffer的字(zi)符個(ge)數

函數參數:buffer 要輸出的字符串指針

format 格(ge)式化字(zi)符串

argument 要輸出的參(can)數(shu)

備注:sprintf和printf函(han)數非(fei)常(chang)類似,使用方法也相同(tong),它們不同(tong)之處在于printf函(han)數是(shi)輸(shu)出(chu)結(jie)果(guo)到(dao)標準輸(shu)出(chu)終端(duan),一(yi)般為屏幕,而sprintf是(shi)將結(jie)果(guo)輸(shu)出(chu)到(dao)指(zhi)定的字符串buffer;

用法舉例:

將一(yi)個格式(shi)化字符串寫(xie)入(ru)到(dao)目標字符串buffer中

char buffer[50] = {0};

int count = 190;

fprintf(buffer,"hello :%d\n", count);

上面程序執行(xing)后,buffer中保存字符串 "hello :190"

4 scanf 函數

函數原型:int scanf(char *format [,argument,...])

功能(neng):從標準輸入(ru)設備(一(yi)般(ban)指(zhi)鍵(jian)盤)實現(xian)格式化輸入(ru)

返(fan)回值:成(cheng)功(gong)返(fan)回讀入的數據項個數

函數參數:format 格式化字符串

argument 輸入(ru)數據項(xiang)的地址列表

常用格式(shi)類(lei)型(xing)參考(kao)printf函數的個格式(shi)類(lei)型(xing)

用法舉例:

從標(biao)準輸(shu)入(ru)設(she)備(bei)中(zhong)輸(shu)入(ru)一個(ge)整數(shu)到整形變量a中(zhong),輸(shu)入(ru)一個(ge)浮(fu)點(dian)數(shu)到浮(fu)點(dian)型變量b中(zhong)

int a=0;

float b=0;

scanf("%d%f",&a,&b);

上面程序(xu)執行后,從鍵(jian)盤輸入(ru): 19 18.6 ,程序(xu)將(jiang) 19賦值給(gei)變量a, 18.6賦值給(gei)變量b .

備注: scanf 函數格式化字(zi)符串(chuan)中不能(neng)加(jia) \n,如上(shang)例中這(zhe)樣寫 scanf("%d%f\n",&a,%b) 是錯(cuo)誤(wu)的。

5 sscanf 函數

函數(shu)原(yuan)型:int sscanf(const char *buffer, char *format [,argument,...])

功能:讀取格式化字符串中的位置(zhi)

返(fan)回值(zhi):成功返(fan)回讀(du)入(ru)的數據項(xiang)個數

函數參數:buffer 要讀取的格式化字符串(chuan)

format 格式化(hua)字符串

argument 輸入(ru)數據項的(de)地址(zhi)列表

備注(zhu): sscanf函數的(de)使用和scanf函數非常類似,它們之間的(de)區別在(zai)于 scanf函數是從標準輸入(ru)(ru)設備輸入(ru)(ru),而(er)sscanf 是從指定(ding)的(de)字(zi)符(fu)串輸入(ru)(ru);

用法舉例:

通常使用sscanf函數(shu)類實現數(shu)據類型轉換,將字符(fu)串轉換為整形或浮點型數(shu)據,舉例如下(xia):

char str[]="0x1a";

int b=0;

sscanf(str,"0x%x",&b);

上面程序的(de)執(zhi)行(xing)結(jie)果將字符串(chuan)0x1a 轉換(huan)成對(dui)應的(de)16進制(zhi)值保存到變(bian)量b中 .

6 getchar 函數

函數(shu)原型: int getchar(void)

功能(neng)(neng): getchar 函數(shu)的(de)功能(neng)(neng)是從(cong)標準(zhun)輸入設備讀(du)取(qu)下(xia)一(yi)個字符,包括(kuo)回(hui)車換行符都能(neng)(neng)讀(du)取(qu)

返(fan)回值: 成功(gong)返(fan)回用戶輸入(ru)字(zi)符對應(ying)的ASCII碼,失敗返(fan)回 -1;

函數參數: 無

備注(zhu): getchar 函數實質是從標(biao)(biao)準(zhun)輸(shu)(shu)(shu)入(ru)設備緩(huan)沖(chong)區(qu)讀取(qu)一個(ge)字符(fu),用(yong)戶(hu)調用(yong) getchar 函數的時候,如(ru)果標(biao)(biao)準(zhun)輸(shu)(shu)(shu)入(ru)緩(huan)沖(chong)區(qu)沒有數據,則(ze)等(deng)待用(yong)戶(hu)從鍵盤輸(shu)(shu)(shu)入(ru);否(fou)則(ze),直接從標(biao)(biao)準(zhun)輸(shu)(shu)(shu)入(ru)緩(huan)沖(chong)區(qu)讀取(qu)一個(ge)字符(fu),而不等(deng)待用(yong)戶(hu)從鍵盤輸(shu)(shu)(shu)入(ru);請(qing)看下(xia)面的例(li)子:

int a = 0;

char b = 0;

scanf("%d", &a);

b=getchar();

在上面代碼(ma)中(zhong)(zhong),我(wo)們(men)首先調(diao)用 scanf 函數從鍵(jian)(jian)盤輸(shu)入一(yi)個整(zheng)(zheng)數到變(bian)(bian)量a中(zhong)(zhong),接(jie)著調(diao)用getchar函數從鍵(jian)(jian)盤輸(shu)入一(yi)個字符(fu)到變(bian)(bian)量b中(zhong)(zhong);但實際運行(xing)時(shi),我(wo)們(men)會發現(xian)輸(shu)入整(zheng)(zheng)數變(bian)(bian)量a后(hou),程(cheng)序并沒有停下來讓我(wo)們(men)輸(shu)入字符(fu)變(bian)(bian)量b,這(zhe)是因為我(wo)們(men)在輸(shu)入整(zheng)(zheng)形變(bian)(bian)量a后(hou),輸(shu)入緩沖區中(zhong)(zhong)保存了回(hui)車(che)符(fu),程(cheng)序在執行(xing)getchar函數時(shi),發現(xian)輸(shu)入緩沖區中(zhong)(zhong)有回(hui)車(che)符(fu),直接(jie)讀取了輸(shu)入緩沖區中(zhong)(zhong)的回(hui)車(che)符(fu),而不再等待用戶從鍵(jian)(jian)盤輸(shu)入.解(jie)決辦法是,在調(diao)用函數getchar輸(shu)入字符(fu)之前,先清空緩沖區,

如下所示:

int a = 0;

char b = 0;

scanf("%d", &a);

while(getchar()!='\n'); //清空輸(shu)入緩(huan)沖(chong)區(qu)

b=getchar();

上(shang)面程序(xu)中,在調用getchar()函數從(cong)鍵盤讀取(qu)字符之前(qian),先執行(xing)語句(ju)while(getchar()!='\n'); 清空輸入緩沖區.

用法舉例:

從標(biao)準(zhun)輸(shu)(shu)入(ru)設備輸(shu)(shu)入(ru)一(yi)個字(zi)符(fu)到字(zi)符(fu)變(bian)量 s 中

char s = 0;

s = getchar();

7 fgets 函數

函數原型: char *fgets(char *buf, int bufsize, FILE *stream);

功(gong)能: 從文件流stream中(zhong)讀取(qu)(qu)數(shu)據(ju),每(mei)次讀取(qu)(qu)一行(xing)。讀取(qu)(qu)的(de)數(shu)據(ju)保存在buf指向的(de)字符數(shu)組中(zhong)。

返回值(zhi): 函數執行(xing)成功(gong)返回buf

失敗(bai)或讀(du)到文件結尾返回NULL

函數參數:buf ,字符(fu)指針,用(yong)來存取(qu)所讀(du)取(qu)的(de)數據;

bufsize, 整數,buf緩沖區的大小;

stream, FILE指針(zhen),表示將要讀取的文件(jian)流;

備(bei)注:使(shi)用 fgets函(han)數(shu)讀(du)(du)取(qu)文件流(liu)數(shu)據的(de)時候(hou),每次多讀(du)(du)取(qu)bufsize-1個(ge)字(zi)符(fu)(fu)(第(di)bufsize個(ge)字(zi)符(fu)(fu)賦'\0'),如(ru)果文件中的(de)該(gai)(gai)行(xing),不足(zu)bufsize個(ge)字(zi)符(fu)(fu),則(ze)讀(du)(du)完該(gai)(gai)行(xing)就(jiu)結束。如(ru)若該(gai)(gai)行(xing)(包括后(hou)一(yi)個(ge)換行(xing)符(fu)(fu))的(de)字(zi)符(fu)(fu)數(shu)超過bufsize-1,則(ze)fgets只返回一(yi)個(ge)不完整的(de)行(xing),但是,緩(huan)沖區總(zong)是以(yi)NULL字(zi)符(fu)(fu)結尾,對fgets的(de)下一(yi)次調(diao)用會繼(ji)續(xu)讀(du)(du)該(gai)(gai)行(xing)。如(ru)果stream設置為(wei)標準輸入流(liu) stdin,則(ze)表示從標準輸入設備(bei)鍵盤(pan)讀(du)(du)取(qu)一(yi)行(xing)數(shu)據;

用法舉例:

從(cong)標準(zhun)輸(shu)入(ru)設備(bei)讀(du)取一(yi)行(xing)字(zi)符串到字(zi)符數組 str中

char str[100] = {0};

fgets(str,100,stdin);

printf("%s\n",str);

8 memset 函數

函數原型: void *memset(void *buffer, int ch, size_t count)

功(gong)能: 將(jiang)buffer中當前(qian)位(wei)置(zhi)后面的count個字節(jie)用 ch 替(ti)換

返回值: 返回 buffer

函數(shu)參數(shu): buffer 指針或數(shu)組(zu),內存緩(huan)沖區的(de)首地(di)址

ch 賦給(gei) buffer的值

count buffer的長度(du)

備注: memset函數(shu)按字(zi)節對內存塊進行(xing)初(chu)始化(hua),實際項目開發過程中,我們通常使(shi)用(yong)memset來對一塊內存進行(xing)清(qing)0或填充某一個特定的值;它是對較(jiao)大的結(jie)構體或數(shu)組進行(xing)清(qing)零操作的一種快方法。

用(yong)法(fa)舉例: 使用(yong)memset函數(shu)對(dui)數(shu)組(zu)清(qing)0

char strbuf[1000];

memset(strbuf,0,1000);

9 memcpy 函數

函數原型: void *memcpy(void *dest, const void *src, size_t n)

 功(gong)能(neng): 由src指向地址為(wei)起(qi)始(shi)地址的連續n個字(zi)節的數(shu)據(ju)復制到以dest指向地址為(wei)起(qi)始(shi)地址的空間內。

返回(hui)值: 函(han)數返回(hui)一個指向dest的(de)指針

函數(shu)參(can)數(shu): dest 目(mu)標數(shu)據(ju)緩沖區起始地址(zhi)

src 源數據緩(huan)沖區起始(shi)地址

n 要復制(zhi)的字節數(shu)

備注: 由于函數(shu)拷貝的過程(cheng)是一個字(zi)節(jie)(jie)(jie)一個字(zi)節(jie)(jie)(jie)的拷貝的,所以實際操作的時(shi)候(hou)要(yao)把void*強制轉化為char*,這樣在指針加的時(shi)候(hou)才(cai)會保(bao)證每次加一個字(zi)節(jie)(jie)(jie).在實際項(xiang)目中(zhong),通常使用memcpy函數(shu)來給結構體變量賦值.

用法舉(ju)例(li): 使用memcpy函數將struct sockaddr_in 結構體變量 addr賦(fu)值給(gei)addrx

memcpy((char *)&addr,(char *)&addrx, sizeof(struct sockaddr_in))

以上就是今天我(wo)要給同學(xue)講解的常用C語言函數的使用,當(dang)然(ran)C語言的庫函數還(huan)有很多,這(zhe)里我(wo)們(men)(men)就不(bu)一一列舉了(le),希望對(dui)同學(xue)們(men)(men)能有所幫助。

上一篇:數據結構鏈表的基本操作

下一篇:通信協議定義及介紹

熱點文章推薦
華清學(xue)員(yuan)就業榜(bang)單
高薪學(xue)員經驗(yan)分享
熱點新(xin)聞推薦
前臺專線:010-82525158 企(qi)業培訓洽談(tan)專線:010-82525379 院(yuan)校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部