C语言返回文件大小的功能(fseek和ftell的使用)
生活随笔
收集整理的這篇文章主要介紹了
C语言返回文件大小的功能(fseek和ftell的使用)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求:有時候讀文件時,需要知道文件的字符總的個數,可能是為了提前定義緩沖區大小或者拷貝文件等等。也可以用于動態創建數組。
在進行這兩個問題之前,先來了解一下兩個函數,這兩個函數配合就能夠實現計算大小的功能。
函數 一:fseek
stdio中的庫函數:
函數原型:int fseek(FILE *stream, long int?offset, int whence);
功能:設定文件指針的位置
參數:
stream: 需要讀取的文件流。
whence:文件源指針的位置,值可以是這三個中的一個:SEEK_SET、SEEK_CUR、SEEK_END分別表示文件開頭位置,文件當前位置,文件結尾位置。
offset:表示以 whence為基點的偏移量的大小。
所以這個函數的整體功能是:從任意位置比如最常用的SEEK_SET、SEEK_CUR、SEEK_END,移動文件指針,移動的大小為offset。函數執行之后,文件指針就移動到了whence + offset位置處。
返回值:執行成功返回0,執行失敗返回非零。
函數二:ftell
stdio中的庫函數:
函數原型: long int ftell(FILE *stream);
功能:當前文件讀寫位置。
返回值:是當前讀寫位置偏離文件頭部的字節數.
所以由fseek設定文件指針的位置,再由ftell計算從文件開頭到fseek獲取的位置的字節數。
實例代碼如下:
include <stdio.h> #include <stdlib.h>int main() { FILE * fp; fp = fopen("addoverflowDemo.c","r"); if(fp == NULL){return -1; }//int fseek(FILE *stream, long int offset, int whence); 獲取起始位置 fseek(fp,0,SEEK_END); //long int ftell(FILE *stream);計算開頭到fseek位置的字符數 int value; value = ftell(fp); printf("字符數為:%dn",value);return EXIT_SUCCESS; }
總結
以上是生活随笔為你收集整理的C语言返回文件大小的功能(fseek和ftell的使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win8.1自带metro应用不工作解决
- 下一篇: dll生成lib