Có các khai báo sau. Trong các câu lệnh sau, câu nào đúng: char tb, mang[15]
Trả lời:
Đáp án đúng: C
Phân tích khai báo:
char tb: Khai báo một biếntbkiểu ký tự (chứa một ký tự duy nhất).char mang[15]: Khai báo một mảng ký tựmangcó kích thước 15, có thể chứa một chuỗi tối đa 14 ký tự (ký tự cuối cùng dành cho '\0').
Đánh giá các phương án:
- A.
tb = "chào bạn";: Sai.tblà một biến kiểuchar, chỉ có thể chứa một ký tự duy nhất. Cố gắng gán một chuỗi ("chào bạn") cho một biếncharsẽ gây ra lỗi. - B.
gets(mang);: Đúng.gets()là một hàm trong C dùng để đọc một chuỗi từ đầu vào chuẩn (stdin) và lưu vào mảng ký tựmang. Vìmangđã được khai báo là một mảng ký tự, nên việc sử dụnggets(mang)là hợp lệ (mặc dù hàm gets() không an toàn và không khuyến khích sử dụng). - C.
mang = "chao ban";: Sai. Trong C, không thể gán trực tiếp một chuỗi ký tự cho một mảng ký tự sau khi nó đã được khai báo. Cần sử dụng các hàm nhưstrcpy()để sao chép chuỗi vào mảng. - D.
gets(tb);: Sai.gets()cần một con trỏ đến một vùng nhớ đủ lớn để chứa chuỗi nhập vào.tbchỉ là một biếnchar, không đủ để chứa một chuỗi, và việc sử dụnggets(tb)sẽ gây ra lỗi (buffer overflow).





