14 關於檔案位置指標的敘述,下列何者正確?
(A) 同一個檔案的所有程序共用同一個位置指標
(B) 開啟檔案時位置指標預設在檔案末尾
(C) 每次讀寫操作後位置指標會自動更新
(D) 位置指標只能向前移動不能向後移動
答案:登入後查看
統計: A(1), B(2), C(5), D(0), E(0) #3399861
統計: A(1), B(2), C(5), D(0), E(0) #3399861
詳解 (共 2 筆)
#7318721
【第一步:找關鍵字】
關鍵字:
-
檔案位置指標(file pointer)(記錄「現在讀到哪裡」)
-
開啟檔案
-
讀寫操作
-
自動更新(重要考點)
? 這題重點在:
檔案讀寫時,指標會怎麼動
【第二步:白話翻譯】
這題在問:
? 「當你讀或寫檔案時,系統怎麼記錄你現在讀到哪一段?」
【第三步:解題思路】
這題在考什麼觀念?
? 檔案讀寫機制(File I/O pointer behavior)
解題步驟
-
想像讀檔案的過程
-
每讀一次,位置會不會改變?
-
找出正確描述
原理與規則(生活比喻)
把檔案想成一本書:
-
位置指標=你讀到哪一頁的書籤
當你:
-
看一頁 → 書籤會往後移
-
寫內容 → 書籤也會往後移
? 系統會自動幫你移動書籤
【第四步:選項分析】
(A) 為什麼錯?
✘ 錯
不同程序(process):
? 各自有自己的檔案描述符(file descriptor)
? 也有自己的位置指標
? 不會共用
(B) 為什麼錯?
✘ 錯
一般開啟檔案(例如 r 模式):
? 預設在「檔案開頭」
只有特定模式(如 a append)才在尾端
(C) 為什麼對?
✔ 正確(本題答案)
? 每次讀或寫後:
位置指標會自動往前移
例如:
-
讀 10 bytes → 指標往後 10
-
寫資料 → 指標往後移
(D) 為什麼錯?
✘ 錯
? 可以用函數改變位置,例如:
-
seek()(跳到指定位置)
? 可以前進也可以後退
【觀念補充與延伸】
核心觀念定位
? 系統程式 / 檔案系統
? 常考基本題
法條或定義
-
檔案位置指標(File Pointer):
用來記錄目前讀寫檔案的位置
常見操作
| 操作 | 效果 |
|---|---|
| read | 指標往後移 |
| write | 指標往後移 |
| seek | 手動移動 |
觸類旁通(舉一反三)
對比概念
-
fseek() vs 自動移動
? fseek:手動控制
? read/write:自動移動
變化題型
-
問:append 模式會怎樣?
? 每次寫都在檔案尾端
【記憶口訣】
? 「讀寫就往後,seek 可前後」
0
0