嵌入式開發中常用到的C語言庫函式

2022-09-06 10:45:14 字數 2104 閱讀 6847

1.sprintf

函式原型:int sprintf(char *string,char *format,[argument,...]);

sprintf函式說明:字串格式化命令,主要功能是將格式化資料寫入某個字串中,即傳送格式化輸出到string所指向的字串。

函式返回值:字串長度

eg:sprintf(s,"%s%d%c","test",1,'2');  /*即把後面的引數按照指定格式輸入到字串s中*/

包含標頭檔案:

注意:sprintf是乙個變參函式,使用sprintf對於寫入buffer的字元數是沒有限制的,這就存在了buffer溢位的可能性。解決這個問題,可以考慮使用snpintf函式,該函式對可寫入的字元數做出了限制。

2.snprintf

函式原型:int snprintf(char *str,size_t size,const char *format,[argument...])

snprintf函式說明:將可變引數按照format的格式格式化為字串,拷貝到str中,至多拷貝size - 1個字元到目標串中,然後再在後面加乙個0。

函式返回值:若成功則返回欲寫入的字串長度,若出錯則返回負值。

eg:char a='a';

char str[3];

snprintf(str,sizeof(str),"%02x",a);  

包含標頭檔案:

3.fseek

函式原型:fseek(file *stream,long offset,int fromwhere)

fseek函式說明:設定檔案指標stream的位置。

如果執行成功,stream將指向以fromwhere為基準,偏移offset(指標偏移量)個位元組的位置,函式返回0。

如果執行失敗(比如offset取值大於2*1024*1024*1024,即long的正數取值範圍2g),則不改變stream的指向,函式返回乙個非0值。

函式返回值:0或非0

eg:fseek(fp,50l,0)  或者fseek(fp,50l, seek_set)  /*將位置指標移到離檔案頭50個位元組處*/

包含標頭檔案:

4.fread

函式原型:fread(void *ptr,size_t size,size_t number,file *stream)

fread函式說明:從給定輸入流stream讀取最多count個物件到陣列ptr中(相當於對每個物件呼叫count次fgetc)

ptr-- 這是指向帶有最小尺寸 size*number 位元組的記憶體塊的指標。

size-- 這是要讀取的每個元素的大小,以位元組為單位。

number-- 這是元素的個數,每個元素的大小為 size 位元組。

stream-- 這是指向 file 物件的指標,該 file 物件指定了乙個輸入流。

函式返回值:成功讀取的元素總數會以 size_t 物件返回,size_t 物件是乙個整型資料型別。如果總數與 number 引數不同,則可能發生了乙個錯誤或者到達了檔案末尾。

eg:(摘自網路,具體鏈結參考:

包含標頭檔案:

5.memcpy

函式原型:void  *memcpy(void *destin,void *source,unsigned n)

函式返回值:函式返回指向dest的指標

eg:char *s="hello world";

char d[20];

memcpy(d,s,(strlen(s)+1));

包含標頭檔案:

拓展:strcpy和memcpy的區別,主要有以下三個方面:

1.複製的內容不同,strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列,整型,結構體,類等。

2.複製的方法不同,strcpy不需要指定長度,它遇到被複製字串結束符'\0'才結束,所以容易溢位。memcpy是根據其第三個引數決定複製的長度。

3.用途不同,通常再複製字串時用strcpy,而需要複製其他資料時,則一般用memcpy。

嵌入式開發中常用的Linux 網路命令

在嵌入式開發中,我們常常用到各種linux命令,今天和大家分享的就是基礎的 linux網路命令,這是在網上無意中看到的一篇整理得非常好的文章,分享給大家,希望對大家有幫助。有抱負的 linux 系統管理員和 linux 狂熱者必須知道的 最重要的 而且基礎的 linux 網路命令合集。在 it s ...

嵌入式C開發中用到的位域結構體

存放乙個開關量或者其他開關狀態時,用一位二進位即可。為了減少嵌入式記憶體資源的開銷,可以使用位域進行定義,位域是c語言支援的一種資料結構,稱為 位域 或 位段 位域 是把乙個位元組中的每個位劃分為幾個不同的區域,並指明每個區域的位數。每個域有乙個網域名稱,允許在程式中按網域名稱進行操作。定義乙個結構...

嵌入式linux開發常用到的命令 不定期更新

linux常用命令 1.檔案類 解壓tar.bz2壓縮包 tar xvjf filename.tar.bz2 解壓tar.xz壓縮包 tar jxvf filename.tar.xz 解壓tar.gz壓縮包 tar xzf filename.tar.gz 解壓tar壓縮包 tar xvf filen...