Kiến thức

Hàm scanf() trong C

Hàm int scanf(const char *format,…) trong Thư viện C chuẩn đọc input đã được định dạng từ stdin.

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()), tức 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ẽ là dạng [=%[*][width][modifiers]type=], được giải thích như sau:

Xem Thêm : Top 5 website đọc báo song ngữ giúp nâng cao trình độ tiếng Anh

Tham sốMiêu tả*Đây là một dấu hoa thị bắt đầu (tùy ý) để chỉ rằng dữ liệu là được đọc từ Stream nhưng bị bỏ qua, ví dụ: nó không được lưu trữ trong tham số tương ứngwidthXác định số ký tự tối đa được đọc trong hoạt động đọc hiện tạimodifiersXác định một kích cỡ khác với int (trong trường hợp d, I và n), unsigned int (trong trường hợp o,u và x) hoặc float (trong trường hợp e, f và g) cho dữ liệu được trỏ bởi tham số bổ sung tương ứng: h cho short int (cho d, i và n), hoặc unsigned short int (cho o, u và x); l cho long int (cho d, i và n), hoặc unsigned long int (cho o, u và x), hoặc double (cho e, f và g); L cho long double (cho e, f và g)typeMột ký tự xác định kiểu dữ liệu được đọc và cách nó được mong đợi được đọc. Bạn theo dõi bảng tiếp theo

Type specifier cho hàm fscanf

KiểuInputKiểu tham sốcKý 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ốichar *dSố nguyên hệ thập phân: Số này tùy ý được đặt trước bởi một dấu + hoặc -int *e, E, f, g, GSố 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. Hai ví dụ hợp lệ là -732.103 và 7.12e4float *oSố nguyên hệ bát phânint *sChuỗi ký tự. Nó sẽ đọ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 (dòng mới) và tab)char *uSố nguyên hệ thập phân không dấuunsigned int *x, XSố nguyên hệ thập lục phânint *

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ụ

Xem Thêm : 89+ Tranh tô màu tàu hỏa đẹp nhất dễ tải dễ in Update 2022

Trong ví dụ sau, mình có nhập khoảng trống trong phần số điện thoại và ngày sinh, và bạn theo dõi phần hiển thị kết quả để thấy rằng lệnh scanf không chấp nhận khoảng trống.

Chương trình C sau minh họa cách sử dụng của hàm scanf() trong C:

#include <stdio.h> int main() { char str1[20], str2[30]; printf(“Nhap ten: “); scanf(“%s”, &str1); printf(“Nhap so dien thoai va ngay sinh: “); scanf(“%s”, &str2); printf(“Ten vua nhap: %sn”, str1); printf(“So dien thoai va ngay sinh vua nhap: %s”, str2); return(0); }

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

Hàm scanf() trong C

Theo Tutorialspoint

Bài trước: Hàm fscanf() trong C

Bài tiếp: Hàm sscanf() trong C

Nguồn: https://xettuyentrungcap.edu.vn
Danh mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button