廣義上,文件是數據源的一種,主要作用是持久化存儲數據。在操作系統中,為了統一接口,硬件設備也被抽象為文件:
| 標準流 | 對應設備 | 默認關聯函數 | |
|---|---|---|---|
| stdin(標準輸入) | 鍵盤 | scanf, getchar, gets | |
| stdout(標準輸出) | 顯示器 | printf, putchar, puts | |
| stderr(標準錯誤) | 顯示器 | perror, fprintf(stderr,...) | |
| stdprn(標準打印) | 打印機 | (較少直接使用) |
| 分類 | 函數代表 | 特點 | 適用場景 |
|---|---|---|---|
| 字符級 | fgetc, fputc | 逐字符,靈活但慢 | 字符統計、過濾、教學 |
| 字符串/行級 | fgets, fputs | 按行處理,保留換行 | 文本文件、日誌、配置 |
| 格式化 | fprintf, fscanf | 類 printf/scanf,文本可讀 | 結構化文本、數據交換 |
| 塊/二進制級 | fread, fwrite | 直接內存拷貝,高效緊湊 | 結構體、圖片、大數據、高性能 |
| 隨機訪問 | fseek, rewind, ftell | 任意位置跳轉 | 數據庫式訪問、大文件定位 |
C 語言支持多種讀寫起始位置:
fseek 移動位置指針到任意偏移量rewind 回到開頭ftell 返回當前偏移量FILE* 操作feof/ferror 判斷fopen/fclose)fseek/rewind/ftell)setbuf/setvbuf/fflush)feof/ferror/clearerr)open/read/write/close,POSIX)