Xem thêm

Hàm scanf() trong thư viện C chuẩn

Huy Erick
Hàm scanf() là một hàm quan trọng trong Thư viện C chuẩn, dùng để đọc input đã được định dạng từ stdin. Tuy nhiên, hàm scanf() có một số đặc điểm cần lưu ý. Định...

Hàm scanf() là một hàm quan trọng trong Thư viện C chuẩn, dùng để đọc input đã được định dạng từ stdin. Tuy nhiên, hàm scanf() có một số đặc điểm cần lưu ý.

Định nghĩa hàm scanf() trong C

Hàm scanf() trong Thư viện C chuẩn được sử dụng để đọc dữ liệu đã được định dạng từ stdin. Tuy nhiên, hàm scanf() không chấp nhận khoảng trống giữa hai chuỗi, khác với hàm gets(). Điều này có nghĩa là bạn chỉ có thể nhập một chuỗi liền nhau. Nếu bạn nhập cả phần khoảng trống, thì phần nội dung sau khoảng trống đầu tiên sẽ không được chấp nhận.

Khai báo hàm scanf() trong C

Dưới đây là phần khai báo cho hàm scanf() trong C:

int scanf(const char *format, ...)

Tham số

  • format: Đây là chuỗi chứa một trong các item sau:
    • Ký tự Whitespace
    • Ký tự Non-whitespace
    • Format specifier. Một format specifier sẽ có dạng [=%[*][width][modifiers]type=].

Type specifier cho hàm scanf()

  • c: Ký tự đơn - Đọc ký tự kế tiếp. Nếu một độ rộng khác 1 được xác định, thì hàm này đọc độ rộng các ký tự và lưu trữ chúng trong các vị trí liên tiếp nhau của mảng đã được truyền như là tham số. Không có ký tự null nào được phụ thêm vào cuối.
  • d: Số nguyên hệ thập phân - Số này tùy ý được đặt trước bởi một dấu + hoặc -.
  • e, E, f, g, G: Số thực dấu chấm động - Số thập phân chứa một dấu thập phân, được đặt trước tùy ý bởi một dấu + hoặc - và được theo sau tùy ý bởi ký tự e hoặc E và một số thập phân.
  • o: Số nguyên hệ bát phân.
  • s: Chuỗi ký tự - Đọc các ký tự liên tiếp nhau tới khi tìm thấy một whitespace (có thể là blank, newline và tab).
  • u: Số nguyên hệ thập phân không dấu.
  • x, X: Số nguyên hệ thập lục phân.

Các tham số bổ sung

Phụ thuộc vào chuỗi định dạng format, hàm này có thể có một dãy tham số bổ sung, mỗi tham số chứa một giá trị để được chèn thay cho mỗi %-tag được xác định trong tham số format, nếu có. Số tham số này nên cùng số lượng với số %-tags mà mong chờ một giá trị.

Trả về giá trị

Nếu thành công, tổng số ký tự đã được ghi sẽ được trả về, nếu thất bại thì trả về một số âm.

Ví dụ minh họa cách sử dụng của hàm scanf() trong C:

#include 
int main() {
    char str1[20], str2[30];
    printf("Nhập tên: ");
    scanf("%s", &str1);
    printf("Nhập số điện thoại và ngày sinh: ");
    scanf("%s", &str2);
    printf("Tên vừa nhập: %s\n", str1);
    printf("Số điện thoại và ngày sinh vừa nhập: %s", str2);
    return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả như sau:

Chương trình scanf() trong C

Xem thêm:

Hướng dẫn học Thư viện C chuẩn

1