Phát biểu đúng nhất về mẫu lệnh (f là con trỏ tệp):while ((ch=fgetc(f))!=EOF) …
Trả lời:
Đáp án đúng: D
Đoạn mã `while ((ch = fgetc(f)) != EOF) ...` thực hiện việc đọc từng ký tự từ tệp được trỏ bởi con trỏ `f` sử dụng hàm `fgetc()`. Hàm `fgetc()` trả về ký tự đọc được (được gán cho biến `ch`) hoặc `EOF` (End Of File) nếu đạt đến cuối tệp. Vòng lặp `while` tiếp tục chừng nào ký tự đọc được khác `EOF`.
* **A. Chọn 1 phần tử và kiểm tra xem có phải là EOF hay không.** - Mô tả này không chính xác vì vòng lặp đọc *từng* phần tử cho đến khi gặp EOF.
* **B. Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự xuống dòng.** - Mô tả này không chính xác vì vòng lặp dừng khi gặp EOF, không phải ký tự xuống dòng.
* **C. Ghi một phần tử và kiểm tra xem có phải là EOF hay không.** - Mô tả này không chính xác vì `fgetc()` dùng để *đọc* chứ không phải *ghi*.
* **D. Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự kết thúc.** - "Kí tự kết thúc" ở đây ám chỉ EOF (End-Of-File). Mô tả này đúng, tuy nhiên đáp án D diễn đạt rõ ràng hơn.
Do đó, đáp án chính xác nhất là D.