What is the purpose of this function?

4 phương ánCó giải thích
Đề bài
void get_a_line(char line[], int max) {
    int n = 0;
    char c;
    while ('\n' != (c = getchar()))
        if (n < max)
            line[n++] = c;
    line[n] = '\0';
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "Reads a line of input safely". Hàm đọc từng ký tự bằng getchar cho tới khi gặp ký tự xuống dòng, chỉ ghi vào mảng khi n còn nhỏ hơn max nên không bao giờ viết quá chỗ đã có, rồi đặt ký tự rỗng kết thúc chuỗi; chính phép kiểm tra n < max là thứ làm nó an toàn hơn cách đọc không giới hạn. Hàm vẫn còn điểm yếu đáng biết: phần dư của dòng nhập dài hơn max bị bỏ, và nếu luồng nhập kết thúc mà chưa có ký tự xuống dòng thì vòng lặp không gặp mốc dừng. "Writes a string to file" sai vì không có con trỏ tệp nào và cũng không gọi hàm ghi tệp. "Compares strings" sai vì hàm chỉ có một mảng và không có phép so sánh nào giữa hai chuỗi. "Reverses string" sai vì chỉ số n luôn tăng, các ký tự được đặt theo đúng thứ tự nhập.

Cùng phần 6

Xuất hiện trong 1 bộ đề