JavaScript is required

Hàm scanf(“%[^\n]”,str); tương với lệnh nào sau đây

A.

getch();

B.

getche();

C.

macro getchar();

D.

gets(str);

Trả lời:

Đáp án đúng: D


Hàm `scanf("%[^\n]", str);` đọc một chuỗi ký tự từ đầu vào chuẩn (stdin) cho đến khi gặp ký tự newline ('\n'). Nó tương đương với hàm `gets(str);` vì cả hai đều đọc một dòng từ đầu vào cho đến khi gặp ký tự newline. Tuy nhiên, `gets()` không an toàn bằng vì nó không kiểm tra kích thước của bộ đệm đầu vào, có thể dẫn đến tràn bộ đệm. Hàm `scanf` với định dạng `%[^\n]` cũng có một số vấn đề về bảo mật tương tự nếu không kiểm soát kích thước đầu vào, nhưng trong ngữ cảnh này, câu hỏi chỉ tập trung vào chức năng tương đương. Các lựa chọn khác: - `getch();` và `getche();` đọc một ký tự từ bàn phím mà không cần nhấn Enter. `getche()` hiển thị ký tự trên màn hình, trong khi `getch()` thì không. - `getchar();` đọc một ký tự từ đầu vào chuẩn, tương tự như `getch()` nhưng cần nhấn Enter.

Câu hỏi liên quan