Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 8 - Vào ra trong C được biên soạn bao gồm các nội dung chính sau: Vào ra chuẩn – getchar và putchar; In ra theo khuôn dạng; Nhập vào theo khuôn dạng; Chuyển dạng trong bộ nhớ; Xử lý tệp; Một số hàm tiện ích. Mời các bạn cùng tham khảo bài giảng!
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. TS. Đặng Thái Việt Đơn vị: Bộ mơn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ lập trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ sở của C++ Dịng điều khiển 10 Lớp Hàm và cấu trúc chương trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG 8. Vào ra trong C 8.1 Vào ra chuẩn – getchar và putchar 8.2 In ra theo khuôn dạng 8.3 Nhập vào theo khuôn dạng 8.4 Chuyển dạng trong bộ nhớ 8.5 Xử lý tệp 8.6 Một số hàm tiện ích Vào ra chuẩn – getchar và putchar Vào chuẩn – getchar putchar • Thư viện chuẩn - Mỗi tệp gốc có tham trỏ tới hàm thư viện chuẩn phải chứa: - Vị trí chỗ bắt đầu chương trình - Tệp stdio.h định nghĩa macro biến hàm dùng thư viện vào/ra Vào ra chuẩn – getchar và putchar • Hàm getchar () - Cơ chế vào đơn giản đọc ký tự từ thiết bị vào chuẩn, nói chung bàn phím hình người sử dụng, hàm getchar() - Dùng câu lệnh sau : biến = getchar(); Nhận ký tự vào từ bàn phím khơng đưa hình Hàm trả ký tự nhận lưu vào biến • Ví dụ: Vào ra chuẩn – getchar và putchar • Hàm putchar () - Để đưa ký tự thiết bị chuẩn, nói chung hình, ta sử dụng hàm putchar() Dùng câu lệnh sau : putchar(ch); Đưa ký tự ch lên hình vị trí trỏ Ký tự hiển thị với màu trắng - • Ví dụ: Vào ra chuẩn – getchar và putchar • Hàm getch() - Hàm nhận ký tự từ đệm bàn phím, khơng cho lên hình - Dùng câu lệnh sau : getch(); Nếu có sẵn ký tự đệm bàn phím hàm nhận ký tự Nếu đệm rỗng, máy tạm dừng Khi gõ ký tự hàm nhận ký tự ( khơng cần bấm thêm phím Enter hàm nhập khác ) Ký tự vừa gõ không lên hình • Ví dụ: Vào ra chuẩn – getchar và putchar • Hàm putch() - Đưa ký tự “ch” lên hình vị trí trỏ Ký tự hiển thị theo màu xác định hàm textcolor Hàm trả ký tự hiển thị - Dùng câu lệnh sau : putch(ch); Đưa kết quả lên màn hình Đưa kết lên hình • Hàm printf(điều khiển, đối số 1, đối số 2, ) - Hàm printf chuyển, tạo khn dạng in đối thiết bị chuẩn điều khiển xâu điều khiển Xâu điều khiển chứa hai kiểu đối tượng: ký tự thông thường, chúng đưa trực tiếp thiết bị ra, đặc tả chuyển dạng, đặc tả tạo việc đổi dạng in đối tiếp sau printf Đưa kết quả lên màn hình • Chuỗi điều khiển có ký tự điều khiển - \n sang dòng - \f sang trang - \b lùi lại bước - \t dấu tab - Dạng tổng quát đặc tả : %[-][fw][.pp] ký tự chuyển dạng 10 Xử lý tệp 29 Xử lý tệp 5.2 Vào tệp nhị phân read write • Ghi vào tệp nhị phân write - Mở tệp tin theo chế độ để ghi nhị phân đối tượng fstream: fstream (, ios::out|ios::binary); - Ghi dữliệu vào tệp thao tác “write()”: .write(char* , int ); - Đóng tệp tin lệnh close(): .close(); 30 Xử lý tệp - Thao tác write nhận hai tham số đầu vào sau: - Tham số thứ trỏ kiểu char trỏ đến vùng liệu cần ghi vào tệp Vì trỏ bắt buộc có kiểu char nên muốn ghi liệu có kiểu khác vào tệp, ta dùng hàm chuyển kiểu: reinterpret_cast(); - Tham sốthứhai kích cỡ liệu ghi vào tệp Kích cỡ tính theo byte, nên thơng thường ta dùng tốn tử: sizeof(); 31 Xử lý tệp • Đọc liệu từ tệp nhị phân read - Mở tệp tin theo chế độ để đọc nhị phân đối tượng fstream (mở tệp tin để ghi): fstream (, ios::in|ios::binary); - Đọc liệu từ tệp thao tác “read()”: .read(char* , int ); - Đóng tệp tin lệnh close(): .close(); 32 Truy nhập tệp trực tiếp Truy nhập tệp trực tiếp 6.1 Con trỏ tệp tin Con trỏ tệp tin có vai trò đầu đọc trỏ vào vị trí xác định tệp thao tác truy nhập tệp diễn - Tại thời điểm, trỏ tệp tin xác định vị trí tệp mà đó, thao tác truy nhập tệp (đọc/ghi) thực • - Sau thao tác truy nhập, trỏ tệp tự động chuyển đến vị trí dựa vào kích thước đơn vị liệu truy nhập 33 Truy nhập tệp trực tiếp • • Cách truy nhập tệp có nhược điểm phải đầu tệp tin, vị trí cần truy nhập Khi tệp tin có kích thước lớn cách truy nhập tốn thời gian C++ cho phép truy nhập trực tiếp đến vị trí xác định tệp tin phép tốn: - Truy nhập vị trí trỏ tệp tin - Dịch chuyển trỏ tệp tin đến vị trí xác định 34 Truy nhập tệp trực tiếp 6.2 Truy nhập vị trí trỏ tệp - Nếu biến tệp kiểu mở tệp để đọc ifstream cú pháp là: .tellg(); - Nếu biến tệp kiểu mở tệp để ghi ofstream cú pháp là: .tellp(); 35 Truy nhập tệp trực tiếp 36 Truy nhập tệp trực tiếp 37 Truy nhập tệp trực tiếp 6.3 Dịch chuyển trỏ tệp Ngoài việc xác định vị trí thời trỏ tệp, C++ cho phép dịch chuyển trỏ tệp đến vị trí tệp Cú pháp dịch chuyển phụ thuộc vào kiểu biến tệp đọc hay ghi - Nếu biến tệp có kiểu mở tệp tin để đọc ifstream, cú pháp : .seekg(, ); - Nếu biến tệp có kiểu mở tệp để ghi ofstream, cú pháp là: .seekp(, ); • 38 Truy nhập tệp trực tiếp - Kích thước: tham số mơ tả khoảng cách dịch chuyển so với vị trí mốc dịch chuyển Đơn vị tính kích thước byte, có kiểu số nguyên - Mốc dịch chuyển: vị trí gốc để xác định khoảng cách dịch chuyển trỏ tệp Có ba tham số kiểu mốc dịch chuyển: - ios::beg: Mốc dịch chuyển đầu tệp tin - ios::cur: Mốc dịch chuyển vị trí thời trỏ tệp - ios::end: Mốc dịch chuyển vị trí cuối tệp tin 39 Truy nhập tệp trực tiếp • Ví dụ: ifstream fileIn(“abc.txt”, ios::in); fileIn.seekg(sizeof(char)*7, ios::beg); - Sẽ dịch chuyển trỏ tệp tin đến kí tự (kiểu char) thứ 7+1 = tệp tin abc.txt để đọc (giả sử tệp tin abc.txt lưu kí tự kiểu char) 40 Truy nhập tệp trực tiếp 41 Truy nhập tệp trực tiếp 42 Truy nhập tệp trực tiếp 43 ...KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ? ?lập? ?trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ? ?sở của C++ Dịng điều khiển... Hàm và cấu trúc? ?chương? ?trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG? ?8. Vào ra trong C 8. 1 Vào ra chuẩn – getchar và putchar 8. 2 In ra theo khn dạng 8. 3 Nhập vào theo khn dạng... ký tự điều khiển - \n sang dòng - \f sang trang - \b lùi lại bước - \t dấu tab - Dạng tổng quát đặc tả : % [-] [fw][.pp] ký tự chuyển dạng 10 Đưa kết quả lên màn hình • Dấu trừ : - Khi khơng có dấu