首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言獲取文件大小並完整讀取:fseek/ftell/malloc/fread 標準流程

     編輯:關於C

標準流程

  1. fopen(..., "rb") 二進制打開;
  2. fseek(fp, 0, SEEK_END) 移至文件末尾;
  3. ftell(fp) 獲取位置即文件大小;
  4. fseek(fp, 0, SEEK_SET) 回到開頭;
  5. malloc(size) 精確分配內存;
  6. fread(buf, 1, size, fp) 一次性讀取;
  7. 處理數據;
  8. free(buf)、fclose(fp) 釋放資源。

代碼實現

FILE *fp = fopen("data.bin", "rb");
if (!fp) { perror("open"); return; }

fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);

unsigned char *buf = malloc(size);
if (!buf) { perror("malloc"); fclose(fp); return; }

fread(buf, 1, size, fp);
// 使用 buf...
free(buf);
fclose(fp);

關鍵優勢

  • 精確分配,無內存浪費;
  • 二進制模式跨平台一致(Windows 文本模式會轉換換行符);
  • 一次性讀取,I/O 效率高。

注意事項

  • ftell 返回 long,大文件(>2GB)需用 fseeko/ftello (POSIX) 或 _fseeki64/_ftelli64 (Windows);
  • 檢查 malloc 返回值;
  • 文本文件若需按行處理,改用 fgets 循環讀取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved