Phát biểu nào sau là đúng khi nói về hàm fgets():
A.
Hàm đọc 1 kí tự từ tệp, nếu thành công hàm cho mã đọc được. Nếu gặp cuối tệp hoặc có lỗi, hàm cho kí tự EOF.
B.
Hàm đọc 1 dãy kí tự từ tệp để lưu vào vùng nhớ mới.
C.
Khi dùng hàm nếu gặp kí tự xuống dòng thì kí tự mã số 10 sẽ được thêm vào cuối xâu được đọc.
D.
Khi dùng hàm, nếu gặp kí tự xuống dòng, thì kí tự mã số 10 và 13 sẽ được thêm vào cuối xâu được đọc.
Trả lời:
Đáp án đúng: D
Hàm `fgets()` được sử dụng để đọc một dòng từ một tệp tin. Nó đọc các ký tự cho đến khi gặp ký tự xuống dòng (newline - '\n'), đạt đến độ dài tối đa được chỉ định, hoặc gặp cuối tệp (EOF). Nếu gặp ký tự xuống dòng, nó sẽ được bao gồm trong chuỗi được trả về. Ký tự null ('\0') sẽ được thêm vào cuối chuỗi để đánh dấu kết thúc chuỗi. Mã số 10 là mã ASCII của kí tự xuống dòng. Vì vậy, đáp án C là chính xác.
Các phương án khác không đúng vì:
- A: Mô tả này không chính xác về chức năng của `fgets()`. `fgets()` đọc một *dãy* ký tự, không phải một ký tự duy nhất.
- B: `fgets()` đọc từ tệp và lưu vào vùng nhớ *đã được cấp phát*, không phải vùng nhớ mới.
- D: Kí tự xuống dòng có mã số 10, không phải 10 và 13. Mã số 13 là kí tự carriage return ('\r'), thường đi kèm với kí tự xuống dòng ('\n') trong các hệ điều hành Windows, nhưng `fgets()` chỉ thêm '\n' (nếu gặp) và '\0'.