Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khác biệt giữa scanf() và gets() trong C


Trong ngôn ngữ C, cả scanf() và gets() đều được định nghĩa để nhận đầu vào từ nguồn bên ngoài và truyền cho hệ thống. Tuy nhiên có những khác biệt đặc trưng giữa hai hàm này.

Dưới đây là các khác biệt quan trọng giữa scanf() và gets() trong C:

STT Tiêu chí scanf() gets()
1 Định nghĩa scanf() đọc đầu vào từ bàn phím và lưu theo định dạng chỉ định. Dừng đọc khi gặp khoảng trắng, xuống dòng hoặc EOF. gets() nhận đầu vào từ bàn phím cho đến khi gặp xuống dòng hoặc EOF. Khoảng trắng được coi là một phần của đầu vào.
2 Khoảng trắng (Whitespace) Trong scanf(), khoảng trắng không được coi là ký tự đầu vào và dừng đọc nếu gặp khoảng trắng ở giữa. Trong gets(), khoảng trắng được coi là ký tự đầu vào và không dừng đọc khi gặp khoảng trắng, tiếp tục đọc từ nguồn.
3 Cú pháp scanf() nhận chuỗi định dạng và danh sách địa chỉ biến. VD: scanf("%d", &number); gets() nhận tên biến để lưu giá trị nhận được. VD: gets(name);
4 Kiểu dữ liệu scanf() đọc nhiều giá trị khác kiểu dữ liệu. gets() chỉ nhận dữ liệu chuỗi ký tự (character string).