色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

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

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

C語言是當中廣泛的計算機編程語言,是所有計算機編程語言的祖先,其他計算機編程語言包括當前流行的Java語言,都是用C語言實現的,C語言是編程效率高的計算機語言,既能完成上層應用開發,也能完成底層硬件驅動編程,在計算機程序設計當中,特別是在底層硬件驅動開發當中,具有不可替代的作用。在C語言學習過程當中,除了學習好C語言基本語法外,掌握常用的C語言庫函數的使用也是非常重要的,本文主要給同學們詳細講解在實際項目開發過程中常用C語言函數的用法。

1 printf 函數

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

功能:實現格式化輸入輸出

返回值:實際輸出的字符個數

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

argument 要輸出的參數

常用的格式化類型有:

d 有符號10進制整數

o 無符號8進制整數

u 無符號10進制整數

x 無符號的16進制數字,并以小寫abcdef表示

X 無符號的16進制數字,并以大寫ABCDEF表示

f 浮點數

c 單個字符

s 字符串

p 顯示一個指針,near指針表示為:XXXX,far指針表示為:XXXX:YYYY

用法舉例:

以10進制形式輸出整形變量a的值;

int a = 100;

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

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

2 fprintf函數

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

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

返回值:實際寫入到文件的字符個數

函數參數:stream 要輸出的文件流指針

format 格式化字符串

argument 要輸出的參數

備注:fprintf和printf函數非常類似,使用方法也相同,它們不同之處在于printf函數是輸出結果到標準輸出終端,一般為屏幕,而fprintf是將結果輸出到指定的文件流;如果將參數輸出文件流stream設置為標準輸出流stdout,則與printf函數等效,如下所示:

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

用法舉例:

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

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

int count = 190;

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

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

3 sprintf 函數

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

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

返回值:實際輸出到字符串buffer的字符個數

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

format 格式化字符串

argument 要輸出的參數

備注:sprintf和printf函數非常類似,使用方法也相同,它們不同之處在于printf函數是輸出結果到標準輸出終端,一般為屏幕,而sprintf是將結果輸出到指定的字符串buffer;

用法舉例:

將一個格式化字符串寫入到目標字符串buffer中

char buffer[50] = {0};

int count = 190;

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

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

4 scanf 函數

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

功能:從標準輸入設備(一般指鍵盤)實現格式化輸入

返回值:成功返回讀入的數據項個數

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

argument 輸入數據項的地址列表

常用格式類型參考printf函數的個格式類型

用法舉例:

從標準輸入設備中輸入一個整數到整形變量a中,輸入一個浮點數到浮點型變量b中

int a=0;

float b=0;

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

上面程序執行后,從鍵盤輸入: 19 18.6 ,程序將 19賦值給變量a, 18.6賦值給變量b .

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

5 sscanf 函數

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

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

返回值:成功返回讀入的數據項個數

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

format 格式化字符串

argument 輸入數據項的地址列表

備注: sscanf函數的使用和scanf函數非常類似,它們之間的區別在于 scanf函數是從標準輸入設備輸入,而sscanf 是從指定的字符串輸入;

用法舉例:

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

char str[]="0x1a";

int b=0;

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

上面程序的執行結果將字符串0x1a 轉換成對應的16進制值保存到變量b中 .

6 getchar 函數

函數原型: int getchar(void)

功能: getchar 函數的功能是從標準輸入設備讀取下一個字符,包括回車換行符都能讀取

返回值: 成功返回用戶輸入字符對應的ASCII碼,失敗返回 -1;

函數參數: 無

備注: getchar 函數實質是從標準輸入設備緩沖區讀取一個字符,用戶調用 getchar 函數的時候,如果標準輸入緩沖區沒有數據,則等待用戶從鍵盤輸入;否則,直接從標準輸入緩沖區讀取一個字符,而不等待用戶從鍵盤輸入;請看下面的例子:

int a = 0;

char b = 0;

scanf("%d", &a);

b=getchar();

在上面代碼中,我們首先調用 scanf 函數從鍵盤輸入一個整數到變量a中,接著調用getchar函數從鍵盤輸入一個字符到變量b中;但實際運行時,我們會發現輸入整數變量a后,程序并沒有停下來讓我們輸入字符變量b,這是因為我們在輸入整形變量a后,輸入緩沖區中保存了回車符,程序在執行getchar函數時,發現輸入緩沖區中有回車符,直接讀取了輸入緩沖區中的回車符,而不再等待用戶從鍵盤輸入.解決辦法是,在調用函數getchar輸入字符之前,先清空緩沖區,

如下所示:

int a = 0;

char b = 0;

scanf("%d", &a);

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

b=getchar();

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

用法舉例:

從標準輸入設備輸入一個字符到字符變量 s 中

char s = 0;

s = getchar();

7 fgets 函數

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

功能: 從文件流stream中讀取數據,每次讀取一行。讀取的數據保存在buf指向的字符數組中。

返回值: 函數執行成功返回buf

失敗或讀到文件結尾返回NULL

函數參數:buf ,字符指針,用來存取所讀取的數據;

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

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

備注:使用 fgets函數讀取文件流數據的時候,每次多讀取bufsize-1個字符(第bufsize個字符賦'\0'),如果文件中的該行,不足bufsize個字符,則讀完該行就結束。如若該行(包括后一個換行符)的字符數超過bufsize-1,則fgets只返回一個不完整的行,但是,緩沖區總是以NULL字符結尾,對fgets的下一次調用會繼續讀該行。如果stream設置為標準輸入流 stdin,則表示從標準輸入設備鍵盤讀取一行數據;

用法舉例:

從標準輸入設備讀取一行字符串到字符數組 str中

char str[100] = {0};

fgets(str,100,stdin);

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

8 memset 函數

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

功能: 將buffer中當前位置后面的count個字節用 ch 替換

返回值: 返回 buffer

函數參數: buffer 指針或數組,內存緩沖區的首地址

ch 賦給 buffer的值

count buffer的長度

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

用法舉例: 使用memset函數對數組清0

char strbuf[1000];

memset(strbuf,0,1000);

9 memcpy 函數

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

功能: 由src指向地址為起始地址的連續n個字節的數據復制到以dest指向地址為起始地址的空間內。

返回值: 函數返回一個指向dest的指針

函數參數: dest 目標數據緩沖區起始地址

src 源數據緩沖區起始地址

n 要復制的字節數

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

用法舉例: 使用memcpy函數將struct sockaddr_in 結構體變量 addr賦值給addrx

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

以上就是今天我要給同學講解的常用C語言函數的使用,當然C語言的庫函數還有很多,這里我們就不一一列舉了,希望對同學們能有所幫助。

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

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

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

回到頂部

主站蜘蛛池模板: 欧美成人A猛片在线观看 | 丝袜美腿一区二区三区 | 四季av一区二区三区免费观看 | 国产日产亚洲系列最新 | 无码韩国三级理论在线观看 | 夜夜欢性恔免费视频 | 欧美黑人巨大 | 日本人成网站18禁止久久影院 | 亚洲AV成人无码一二三在线观看 | 男人激烈吮乳吃奶动态图 | 在线麻豆精东9制片厂AV影现网 | 国产精品宅男擼66M3U8 | 日本高清视频www | 性开放网交友网站 | 97影院理论片手机在线观看 | 717影院理论午夜伦八戒 | 国产成人综合色就色综合 | 688欧美人禽杂交狂配 | 性中国熟妇videofreesexwww | 久久久精品2019免费观看 | 嫩菊在线观看免费视频 | 精品国产福利一区二区三区 | 色情久久久AV熟女人妻网站 | 理伦少妇片一级 | 乌克兰丰满女人a级毛片右手影院 | 亚洲精品国偷自产在线99正片 | 啊灬啊灬啊灬快灬A片免费 97热视频在线 | 无码爆乳护士让我爽 | 狠狠人妻久久久久久综合蜜桃 | 一本一道av无码中文字幕麻豆 | 午夜成人精品福利网站在线观看 | 2021亚洲爆乳无码专区 | 少妇精油按摩AV无码中字 | 男人的天堂AV网址 | 久久精品国产亚洲AV久 | 岛国精品资源网站 | 成人黄色免费观看 | 国产精品高潮呻吟av久久动 | 久久无码中文字幕无码 | 4d肉蒲团之性战奶水 | 中文字幕第二色 |