Scanf() trong C là gì

X

Privacy & Cookies

This site uses cookies. By continuing, you agree to their use. Learn more, including how to control cookies.

Got It!
Advertisements

Đầu Tiên giới thiệu. Mình Là Hiếu học lớp C1609I. Hôm nay mình viết blog để giới thiệu và cách sử dụng về hàm scanf và printf trong C++.

Giới thiệu :

Trong bất kỳ ngôn ngữ lập trình nào, việc nhập giá trị cho các biến và in chúng ra sau khi xử lý có thể được làm theo hai cách:
+ Thông qua phương tiện nhập xuất chuẩn [I/O]
+ Thông qua những tập tin.
Trong phần này ta sẽ nói về chức năng nhập và xuất cơ bản. Nhập và xuất [I/O] luôn là các thành phần quan trọng của bất kỳ chương trình nào. Để tạo tính hữu ích, chương trình của bạn cần có khả năng nhập dữ liệu vào và hiển thị lại những kết quả của nó.
Trong C, thư viện chuẩn cung cấp những thủ tục cho viêc nhập xuất. Thư viện chuẩn có những hàm quản lý các thao tác nhập/ xuất cũng như các thao tác trên ký tự và chuỗi. Trong bài học này, tất cả những hàm dùng để đọc dữ liệu vào từ thiết bị nhập chuẩn và tất cả những hàm xuất dùng để viết kết quả ra thiết bị xuất chuẩn. Thiết bị nhập chuẩn thông thường là bàn phím. Thiết bị xuất chuẩn thông thường là màn hình [console]. Nhập và xuất ra có thể được định hướng đến tập tin hay từ tập tin thay vì thiết bị chuẩn. Những tập tin có thể được lưu trên đĩa hay trên bất cứ thiết bị lưu trữ nào khác. Dữ liệu đầu ra cũng có thể được gửi đến máy in.

1.Tập tin tiêu đề

Trong các ví dụ trước, ta từng viết dòng mã sau:

Code:#include

Đây là lệnh tiền xử lý [preprocessor command]. Trong C chuẩn, ký hiệu # nên đặt tại cột đầu tiên. stdio.h là một tập tin và được gọi là tập tin tiêu đề [header]. Nó chứa các macro cho nhiều hàm nhập và xuất được dùng trong C. Hàmprintf[], scanf[], putchar[]getchar[]được thiết kế theo cách gọi cácmacrotrong tập tinstdio.hđể thực thi các công việc tương ứng.

I. Printf []

Cấu trúc câu lệnh:

Code:
printf[control string, argument list];

Trong đó control string bao gồm những ký tự văn bản và các lệnh định dạng. Các ký tự dấu trắng, phím tab và dấu xuống dòng không in được. Dưới đây bảng mã định dạng củaprintf[], quy ước in và các ký tự đặc biệt trong chuỗi điều khiển.

Bổ từ [modifier] cho các lệnh định dạng trong printf[]
+ Bổ từ : dữ liệu sẽ được canh trái bên trong không gian dành cho nó, chúng sẽ được in bắt đầu từ vị trí ngoài cùng bên trái.
+ Bổ từ xác định độ rộng : chúng có thể được dùng với kiểu: float, double hay char array [chuỗi-string]. Bổ từ xác định độ rộng là một số nguyên xác định độ rộng nhỏ nhất của trường dữ liệu. Các trường dữ liệu có độ rộng nhỏ hơn sẽ cho canh phải trong kết quả của trường dữ liệu. Các dữ liệu có kích thước lớn hơn sẽ được in bằng cách thêm những vị trí cho đủ yêu cầu.
+ Bổ từ xác định độ chính xác : chúng có thể được dùng với kiểu float, double hay char array, string. Bổ từ xác định độ rộng chính xác được viết dưới dạng .m với m là một số nguyên. Nếu xử dụng với kiểu float và double, chuỗi số chỉ ra số con số tối đa có thể được in ra phía bên phải dấu chấm thập phân. Nếu phần phân số của các mục dữ liệu kiểu float hay double vượt quá độ rộng con số chỉ trong bổ từ, thì số đó sẽ được làm tròn. Nếu chiều dài chuỗi vượt quá chiều dài chỉ định thì chuỗi sẽ được cắt bỏ phần dư ra ở phía dưới. Một vài số 0 sẽ được thêm vào nếu số con số thực sự trong một mục dữ liệu ít hơn được chỉ định trong bổ từ. Tương tự, các khoảng trắng sẽ được thêm vào cho chuỗi ký tự.
-> Bổ từ 0 : Theo mặc định, việc thêm vào một trường được thực hiện với các khoảng trắng. Nếu người dùng muốn thêm vào trường với số không 0, bổ từ này phải được dùng.
-> Bổ từ 1 : Bổ từ này có thể được dùng để hiển thị số nguyên như: long int hay một tham số kiểu double. Mã định dạng tương ứng cho nó là %ld
-> Bổ từ h : Bổ từ này được dùng để hiển thị kiểu short integer. Mã định dạng tương ứng cho nó là %hd.
-> Bổ từ * : Bổ từ này được dùng khi người dùng không muốn chỉ trước độ rộng của trường mà muốn chường trình xác định nó. Nhưng khi đi với bổ từ này, một tham số đựoc yêu cầu phải chỉ ra rộng trường cụ thể. Dưới đây là một vài ví dụ về bổ từ

Ví dụ 1 :

C Code:
Lựa chọn code|Ẩn/Hiện code
/*Chuong trinh nay trinh bay cach dung bo tu trong printf[]*/
#include voidmain[]
{
printf[The number 555 is various forms:\n];
printf[Without any modifier:\n];
printf[[%d]\n,555];
printf[With modifier:\n];
printf[[%-d]\n,555];
printf[With digit string 10 as modifier:\n];
printf[[%10d]\n,555];
printf[With 0 as modifier:\n];
printf[[%0d]\n,555];
printf[With 0 and digit string 10 as modifiers:\n];
printf[[%010d]\n,555];
printf[With -, 0 and digit string 10 as modifiers:\n];
printf[[%-010d]\n,555];
}

II. Scanf[]

Hàm scanf[] được sử dụng để nhập dữ liệu. Khuôn dạng chung của hàm scanf[] như sau:

C Code:
Lựa chọn code|Ẩn/Hiện code
scanf[Chuỗi các định dạng,Danh sách các tham số];

Định dạng được sử dụng bên trong câu lệnh printf[] cũng được sử dụng cùng cú pháp trong các câu lệnh scanf[]. Những lệnh định dạng, bao gồm bổ từ và danh sách tham số được bàn luận cho printf[] thì cũng hợp lệ cho scanf[], chúng tuân theo một số đặc điểm sau:
+ Sự khác nhau trong danh sách tham số giữa printf[] và scanf[]: Hàm printf[] dùng các tên biến, hằng số, hằng chuỗi và các biểu thức, nhưng scanf[] sử dụng những con trỏ tới các biến. Một con trỏ tới một biến là một mục dữ liệu chức đựng địa chỉ của nơi mà biến được cất giữ trong bộ nhớ. Những con trỏ sẽ được bàn luận chi tiết ở chương sau. Khi sử dụng scanf[] cần tuân theo những quy tắc cho danh sách tham số:
-> Nếu ta muốn nhập giá trị cho một biến có kiểu dữ liệu cơ bản, gõ và tên biến cùng với ký hiệu & trước nó.
-> Khi nhập giá trị cho một biến thuộc kiểu dữ liệu dẫn xuất [không phải thuộc bốn kiểu dữ liệu cơ bản char, int, float, double], không sử dụng & trước tên biến.
+ Sự khác nhau trong lệnh định dạng giữa printf[] và scanf[]: Không có tùy chọn %g. Mã định dạng %f và %e có cũng hiệu quả tác động. Cả hai nhận một ký hiệu tùy chọn, một chuỗi các con số có hay không có dấu chấm thập phân và một trường số mũ tùy chọn.
Cách thức hoạt động của scanf[]: nó sử dụng những ký tự không được in như ký tự khoảng trắng, ký tự phân cách [tab], ký tự xuống dòng để quyết định khi nào một trường nhập kết thúc và bắt đầu. Có sự tương ứng giữa lệnh định dạng với những trường trong danh sách tham số theo một thứ tự xác định, bỏ qua những ký tự khoảng trắng bên trong. Do đó, đầu vào có thể được trải ra hơn một dòng, miễn là chúng ta có it nhất một ký tự phân cách, khoảng trắng hay hàng mới giữa các trường nhập vào. Nó bỏ qua những khoảng trắng và ranh giới hàng để thu được dữ liệu.

Ví dụ 1:

C Code:
Lựa chọn code|Ẩn/Hiện code
/*Chuong trinh mo ta viec dung ham scanf[]*/#include
voidmain[]
{
inta;
floatd;
charch,name[40];
printf[Please enter the date\n];
scanf[%d %f %c %s,&a,&d,&ch,name];
printf[\nThe values accepted are: %d, %f, %c, %s,a,d,ch,name];
}..

Qua Đây có thể giúp phần nào cho mọi người hiểu 1 chút ít về Scanf[] và Printf[] trong c++

Advertisements

Share this:

Video liên quan

Chủ Đề