Input Output - Xuất nhập dữ liệu
Chúng ta tương tác với máy tính như thế nào ?
1. Sự tương tác giữa chúng ta và máy tính
Chúng ta phải tương tác với máy tính thông qua phần mềm phiên dịch, để ra lệnh cho chúng vì chúng chỉ hiểu được mã nhị phân 0 và 1. Dưới đây là hình ảnh một phần mềm dịch lệnh chúng ta đưa ra và hiển thị thông tin máy gửi, BIOS.
BIOS - Hệ thống xuất nhập cơ bản
Trong lập trình C cũng vậy, việc đưa và lấy dữ liệu phải thông qua thư viện stdio.h với 2 câu lệnh cơ bản là printf() và scanf() nằm trong thư viện stdio.h
1. printf()
Printf() là câu lệnh dùng để đưa ra màn hình dữ liệu chúng ta đặt trong dấu ngoặc đơn. Printf() là câu lệnh tổng quát để đưa ra màn hình tất cả các loại dữ liệu từ ký tự cho đến số.
Câu lệnh printf() tổng quát có dạng:
printf("control string",đối số)
Control string có thể là mã định dạng, văn bản hoặc ký tự không in được
Control string có thể là mã định dạng, văn bản hoặc ký tự không in được
1 ví dụ nho nhỏ như sau
Như hình trên, việc xuất giá trị của biến được thực hiện qua câu lệnh printf(). Số nguyên, số thập phân, chuỗi ký tự tất cả đều dùng được câu lệnh printf(). Nhưng vì tính đa dạng của nó mà người ta phải thêm mã định dạng (%d %s hay \n) để đưa ra màn hình kết quả đúng theo nhu cầu.
Vì những ký tự % \ " mang ý nghĩa đặc biệt trong câu lệnh printf(), người ta sẽ đặt một quy luật để in ra những ký tự đó nếu muốn:
- \\: In ra kí tự \
-\": In ra ký tự "
-%%: In ra ký tự %
2. scanf()
Đây là câu lệnh để máy tính nhận lấy dữ liệu chúng ta nhập vào. Khác với printf() sẽ được in ra ngay lập tức, câu lệnh scanf() trong đoạn mã sẽ khiến máy tính sẽ dừng lại ở trước đoạn scanf() và hiện ra con trỏ nhấp nháy chờ chúng ta nhập dữ liệu.
Ví dụ trên, máy tính đã nhận được 2 dữ liệu là 15 và 0.3 như người dùng đã đưa vào. Khi dùng scanf(), bất cứ biến số nào cũng phải thêm ký tự "&" . Ký tự đó liên quan đến con trỏ mang vị trí của biến sẽ viết ở các bài sau.
Comment: Nếu đưa vào một dữ liệu không đúng theo mã định dạng, đoạn mã sẽ diễn ra liên tục và cắt bỏ hoàn toàn các lệnh input tiếp theo, sau đó cho ra kết quả lên màn hình.
3. Mã định dạng
Lệnh scanf() sử dụng liên tục các mã định dạng %d và %f để nhận các giá trị số nguyên và số thực. Vậy mã định dạng là gì ?
Mã định dạng là một yếu tố xác định kiểu dữ liệu được đưa vào và in ra của 2 câu lệnh printf() và scanf().
Comment: Bài này sử dụng gets() thay cho scanf() vì scanf() sẽ không gán đầy đủ chuỗi có khoảng trắng cho biến. Ví dụ "trinh bach" gán cho biến name bằng scanf() thì chỉ có "trinh" được gán còn phần sau sẽ đưa vào bộ nhớ đệm. Phần gets() và puts() sẽ nói ở bài sau
Danh sách mã định dạng. Nguồn kkhsou.in
2. Kết luận
Trên đây là lệnh cơ bản để gửi dữ liệu tới máy tính và nhận dữ liệu đưa ra màn hình. printf() và scanf() mang những quy luật nhất định mà chúng ta phải tuân theo nếu không muốn xảy ra lỗi, do tính chất bao trùm của chúng.