Hướng dẫn thực hành Hệ điều hành - Bài 1: Ôn lại các thao tác trên tập tin

A. Lý thuyết

- Kỹnăng lập trình C căn bản.

- Các kỹthuật lập trình liên quan ñến tập tin.

B. Thực hành

1. Viết chương trình (VCT) mã hóa nội dung của một tập tin & chương trình giải mã

tương ứng.

2. VCT nhập vào tên của một file .EXE có sẵn và gọi thực hiện file .EXE ñó.

3. VCT ñọc & hiển thịnội dung 1 tập tin ra màn hình dưới dạng Hex (nhưdạng hiển

thịnội dung tập tin của phần mềm NC khi nhấn phím F3 rồi nhấn tiếp F4 – nhưng

không cần xuất ra ñường thẳng ñứng phân cách).

pdf3 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 1776 | Lượt tải: 1download
Tóm tắt nội dung Hướng dẫn thực hành Hệ điều hành - Bài 1: Ôn lại các thao tác trên tập tin, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
HDTH môn Hệ ñiều hành Ôn lại các thao tác trên tập tin 
Khoa Công Nghệ Thông Tin – Trường ðH KHTN Tp.HCM 1 
Hướng dẫn thực hành bài 1 
A. Lý thuyết 
- Kỹ năng lập trình C căn bản. 
- Các kỹ thuật lập trình liên quan ñến tập tin. 
B. Thực hành 
1. Viết chương trình (VCT) mã hóa nội dung của một tập tin & chương trình giải mã 
tương ứng. 
2. VCT nhập vào tên của một file .EXE có sẵn và gọi thực hiện file .EXE ñó. 
3. VCT ñọc & hiển thị nội dung 1 tập tin ra màn hình dưới dạng Hex (như dạng hiển 
thị nội dung tập tin của phần mềm NC khi nhấn phím F3 rồi nhấn tiếp F4 – nhưng 
không cần xuất ra ñường thẳng ñứng phân cách). 
Hướng dẫn: 
- Các biến, hàm và kỹ năng cần biết: 
o Các biến, hàm liên quan ñến tập tin: 
 Con trỏ FILE: FILE * 
 Mở file: FILE *fopen(const char *filename, const char *mode) 
• filename: tên tập tin 
• mode: r, w, a, r+, w+, a+, t(text), b(binary) 
 ðọc dữ liệu: size_t fread(void *ptr, size_t size, size_t n, FILE* stream) 
 Ghi dữ liệu: size_t fwrite(const void *ptr, size_t size, size_t n, FILE* stream) 
• ptr: vùng ñệm ñể ñọc / ghi 
• size: kích thước (theo byte) 1 item cần ñọc / ghi 
• n: số item cần ñọc / ghi 
• stream: con trỏ ñến file sẽ ñọc / ghi 
• Trả về số item ñã ñược ñọc / ghi 
o Chỉ thị nhập / xuất cho hàm scanf / printf: 
 Ký tự (char): %c 
 Chuỗi (char []) có ký tự kết thúc chuỗi: %s 
 Số nguyên (int): 
• Dạng bát phân: %o 
• Dạng thập phân: %d 
• Dạng thập lục phân: %x (chữ thường a, b…), %X (chữ hoa A, B…) 
 Số thực (float): %f 
 Số nguyên dài (long): %ld  long int 
 Số thực dài (double): %lf  long float 
 ðịnh dạng số khoảng trống xuất: 
• Cho số nguyên: %nd  n khoảng trống dành biểu diễn số nguyên (n âm: 
canh trái, n dương: canh phải). Nếu n = 0 thì không canh lề. Ví dụ: 
HDTH môn Hệ ñiều hành Ôn lại các thao tác trên tập tin 
Khoa Công Nghệ Thông Tin – Trường ðH KHTN Tp.HCM 2 
o int a = 123, b = 15; 
o printf(“%-4d%5d”, a, b); 
o Kết quả: dành 4 khoảng trống và canh trái cho biến a; dành 5 
khoảng trống và canh phải cho biến b 
1 2 3 1 5 
• Cho số thực: %n.md  n khoảng trống dành biểu diễn số thực tính luôn 
dấu chấm “.” (n âm: canh trái, n dương: canh phải), m là số chữ số lẻ của 
số thực ñó. Lưu ý, nếu dùng cách này ñể biểu diễn số nguyên thì số 
nguyên ñó tự ñộng thêm số 0 ở ñầu ñể bảo ñảm tổng số chữ số của số 
nguyên bằng m. Ví dụ: 
o int a = 4; float b = 1.2, c = 2.126; 
o printf(“%-5.3d%6.2f%7.2f”, a, b, c); 
o Kết quả: dành 5 khoảng trống, canh trái, 3 số ñể biểu diễn biến a; 
dành 6 khoảng trống, canh phải, 2 số lẻ ñể biểu diễn biến b; dành 7 
khoảng trống, canh phải, 2 số lẻ ñể biểu diễn biến c. 
0 0 4 6 . 2 0 2 . 1 3 
Bài 1: 
Gợi ý: Có thể chọn phương pháp mã hóa ñơn giản là xoay vòng (tăng hoặc giảm giá trị 
mã ASCII của mỗi ký tự (mỗi byte) của tập tin muốn mã hóa. Muốn giải mã ta chỉ việc 
làm ngược lại quá trình trên. Ví dụ: tập tin có nội dung VIT CON 
Chọn cách mã hóa tăng mỗi lần 2 nấc: V (86)  X (88) , I (73)  K (75)… 
Giải mã sẽ làm ngược lại: X (88)  V (86), K (75)  I (73)… 
Chú ý: 
- Vì bảng mã ASCII chỉ có 256 ký tự tương ứng với mã ASCII từ 0 ñến 255. Do 
ñó, ta phải chú ý mã hóa các ký tự có mã ASCII 254  0, 255  1… ứng với 
cách mã hóa tăng 2 như trên. 
- Muốn biết ký tự có mã ASCII là n là ký tự gì, ta giữ Alt rồi nhấn các chữ số của n 
ñó rồi thả Alt ra. Ví dụ ta giữ Alt, nhấn 6, 5 rồi thả Alt ra, lập tức ta có chữ A vì 
mã ASCII của ký tự A là 65. 
- Công thức gợi ý: 
Mã ASCII của ký tự ñã mã hóa = (Mã ASCII của ký tự cần mã hóa + n) % 256. 
n > 0 : tăng, n < 0: giảm 
Bài 2: 
Sử dụng một trong cách hàm sau ñể gọi thực hiện một lệnh ngoài DOS: 
- int system(const char *command)  trong thư viện PROCESS.H hoặc 
STDLIB.H 
- Nhóm lệnh exec… hay spawn… trong thư viện PROCESS.H 
HDTH môn Hệ ñiều hành Ôn lại các thao tác trên tập tin 
Khoa Công Nghệ Thông Tin – Trường ðH KHTN Tp.HCM 3 
Lưu ý: ñể gọi thực thi một tập tin .EXE thì chương trình phải có một bộ nhớ ñủ lớn. ðể 
chỉnh lại kích thước vùng nhớ cho chương trình trong BC++ 3.1 for DOS, ta làm như sau: 
Chọn menu Options > Compiler > Code generation… > Chọn Model Compact trở lên. 
Bài 3: 
ðọc nội dung tập tin rồi xuất giá trị từng byte ra màn hình với chỉ thị %x ñể xuất dạng 
Hex. Kết hợp cách ñịnh dạng số khoảng trắng xuất ñể gióng cột cho thẳng hàng. 

File đính kèm:

  • pdfHướng dẫn thực hành Hệ điều hành - Bài 1 Ôn lại các thao tác trên tập tin.pdf