Upload
nguyen-thu-hang
View
212
Download
0
Embed Size (px)
Citation preview
8/19/2019 SinhVienIT.net HDTHBai01
1/3
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 1A. 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ành1.
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ưngkhô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ụ:
8/19/2019 SinhVienIT.net HDTHBai01
2/3
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 7khoả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
8/19/2019 SinhVienIT.net HDTHBai01
3/3
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.