幾個Linux函數(很久的整理了,從自己的新浪博客搬來)

fwrite函數

1.函數功能

用來讀寫一個數據塊。

2.一般調用形式

fwrite(buffer,size,count,fp);

3.說明

(1)buffer:是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。

(2)size:要讀寫的字節數;

(3)count:要進行讀寫多少個size字節的數據項;

(4)fp:文件型指針

fread 函數

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

參數解釋:
ptr: 指向一塊存儲空間,用來存放本次讀取到的數據
size: 一個數據元素的大小
nmemb: 本次讀取多少個數據元素(也可以叫一個數據單元,我不知是否準確)
stream: 將要讀取的文件流
返回值:
如果讀取成功,返回 nmemb,即返回讀取到的元素個數(不是讀取的字符個數)
如果遇到文件結束,返回實際讀取到的元素個數,可能小於 nmemb
如果失敗,返回0
注意事項:
在fread的文檔中說了,對於返回值爲0的情況,fread不區分到底是讀到文件結束了,還是讀取失敗了。
注意read和write二者多少個數據元素的位置
memcpy()函數
void *memcpy(void *dest, const void *src, size_t n);
從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中
函數返回dest的值。
1.source和destin所指的內存區域可以重疊,但是如果source和destin所指的內存區域重疊,那麼這個函數並不能夠確保source所在重疊區域在拷貝之前被覆蓋。而使用memmove可以用來處理重疊區域。函數返回指向destin的指針
2.strcpy和memcpy主要有以下3方面的區別。
2.1、複製的內容不同。strcpy只能複製字符串,而memcpy可以複製任意內容,例如字符數組、整型、結構體、類等任意的可讀寫的空間均可。
2.2、複製的方法不同。strcpy不需要指定長度,它遇到被複制字符的串結束符"\0"才結束,所以容易溢出。memcpy則是根據其第3個參數決定複製的長度。
2.3、用途不同。通常在複製字符串時用strcpy,而需要複製其他類型數據時則一般用memcpy
3.如果目標數組destin本身已有數據,執行memcpy()後,將覆蓋原有數據(最多覆蓋n)。如果要追加數據,則每次執行memcpy後,要將目標數組地址增加到你要追加數據的地址。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章