Which of the following reads in a string named x with one hundred characters?
Trả lời:
Đáp án đúng: B
Phân tích câu hỏi:
Câu hỏi kiểm tra kiến thức về cách đọc một chuỗi ký tự từ đầu vào chuẩn (stdin) trong C/C++. Cần xác định hàm nào được sử dụng để đọc chuỗi, số lượng ký tự tối đa có thể đọc, và cách xử lý ký tự newline.
Đánh giá các phương án:
- A. fgets(x, 101, stdin); fgets đọc tối đa 100 ký tự (101 - 1) từ stdin và lưu vào x. Hàm này luôn thêm ký tự null ('\0') vào cuối chuỗi, đảm bảo chuỗi kết thúc. Đây là đáp án đúng vì nó cho phép đọc chuỗi 100 ký tự và vẫn đảm bảo chuỗi kết thúc null.
- B. fgets(x, 100, stdin); fgets đọc tối đa 99 ký tự (100 - 1) từ stdin và lưu vào x. Hàm này luôn thêm ký tự null ('\0') vào cuối chuỗi, đảm bảo chuỗi kết thúc. Mặc dù cú pháp đúng, nhưng chỉ đọc tối đa 99 ký tự, không đáp ứng yêu cầu 100 ký tự.
- C. readline(x, 100, ‘\n’);
Hàm
readline
không phải là hàm chuẩn trong C/C++. Do đó, phương án này sai. - D. read(x);
Hàm
read
thường được sử dụng cho các thao tác đọc file ở cấp thấp hơn (system call) và không tự động thêm ký tự null vào cuối chuỗi, điều này gây khó khăn trong việc xử lý chuỗi sau đó. Hơn nữa, kích thước tối đa đọc vào không được chỉ định rõ ràng, có thể gây ra lỗi tràn bộ đệm.
Kết luận:
Phương án A là đáp án đúng nhất vì nó sử dụng hàm fgets
để đọc tối đa 100 ký tự từ đầu vào chuẩn và đảm bảo chuỗi kết thúc bằng ký tự null.