JavaScript is required

Which of the following reads in a string named x with one hundred characters?

A.

fgets(x, 101, stdin);

B.

fgets(x, 100, stdin);

C.

readline(x, 100, ‘\n’);

D.

read(x);

Trả lời:

Đáp án đúng: B


Câu hỏi này kiểm tra kiến thức về cách đọc một chuỗi từ đầu vào chuẩn (stdin) trong C/C++. Chúng ta cần tìm hàm nào đọc được một chuỗi có 100 ký tự.

\n

Phân tích các phương án:

\n
    \n
  • A. fgets(x, 101, stdin);: Hàm fgets đọc tối đa n-1 ký tự từ luồng đầu vào, trong đó n là tham số thứ hai. Trong trường hợp này, fgets(x, 101, stdin) sẽ đọc tối đa 100 ký tự từ stdin và lưu vào chuỗi x. Nếu gặp ký tự newline (\n), nó cũng sẽ được đọc và lưu vào chuỗi. Chuỗi kết quả sẽ luôn được kết thúc bằng ký tự null (\0). Đây là phương án đúng.
  • \n
  • B. fgets(x, 100, stdin);: Hàm fgets(x, 100, stdin) sẽ đọc tối đa 99 ký tự từ stdin. Điều này không đáp ứng yêu cầu đọc 100 ký tự.
  • \n
  • C. readline(x, 100, ‘\\n’);: Hàm readline không phải là một hàm chuẩn trong C/C++. Vì vậy, phương án này không đúng.
  • \n
  • D. read(x);: Hàm read là một hàm hệ thống (system call) thường được sử dụng để đọc dữ liệu từ một file descriptor (ví dụ: file, socket). Nó không tự động thêm ký tự null (\0) vào cuối chuỗi, và việc sử dụng nó trực tiếp để đọc chuỗi có thể gây ra lỗi tràn bộ đệm nếu không được xử lý cẩn thận. Hơn nữa, cú pháp read(x) không đầy đủ; cần chỉ rõ số byte cần đọc và file descriptor.
  • \n
\n

Kết luận:

\n

Phương án A là đúng vì nó sử dụng hàm fgets để đọc tối đa 100 ký tự từ đầu vào chuẩn và lưu vào chuỗi x, đồng thời đảm bảo chuỗi kết thúc bằng ký tự null.

Câu hỏi liên quan