1. Trang chủ
  2. » Công Nghệ Thông Tin

kỹ thuật lập trình C chuyên nghiệp phần 9

16 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Tham khảo tài liệu ''kỹ thuật lập trình c chuyên nghiệp phần 9'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Tậ Tập ti tin Nhị phân h⠄ Cá chế Các hế độ mở tập tậ tin ti nhị hị phân phân: hâ : … “rb” : mở đọc … “wb” “ b” : ghi hi (ghi ( hi đè lên lê tập tậ tin ti cũũ h ặ tạo t ới ế tập tậ tin khơng có đĩa) … “ab” ab : ghi nối vào cuối tập tin tin … “rb+” : đọc/ghi đọc/ghi Tập tin phải có đĩa đĩa … “wb+” “ b+” : tạo tập tin cho phép đọc ghi ghi … “ab+” : đọc, ghi vào cuối tập tin tin Tạo tập tin tập tin chưa có đĩa đĩa Đ ghi Đọc hi tập tậ ti tin Nhị phân h⠄ fread() : đọc fread() size_t fread ( void *Ptr *Ptr,, size_t ItemSize ItemSize,, size_t NumItem NumItem,, FILE * fp ); fread đọc NumItem khối liệu liệu,, khối có kích thước ItemSize từ fpp chứa vào vùngg nhớ xác định ị Ptr Ptr fread trả số khối liệu đọc được Nếu có lỗi EOF giá trị trả nhỏ NumItem „ fwrite() : ghi fwrite() size_t i t fwrite f it ( constt void id *Ptr **Pt Pt , size_t Ptr, i t ItemSize It Si , ItemSize, size_t NumItem NumItem,, FILE * fp ); fwrite ghi khối (NumItem x ItemSize) ItemSize) xác dịnh Ptr fp „ Chép mục từ tập tin filename vào vùng nhớ trỏ ptr ptr fpỈ fp Æfilename Con C ttrỏ ỏ FILE „ Một tập tậ tin ti sau mở đ quản ả lý thông thô qua ột trỏ tỏ FILE FILE „ Khi mở tập tin (wb, rb), trỏ FILE đến đầu tập tin tin „ Khi mở tập tin (ab), trỏ FILE đến cuối tập tin tin „ Con trỏ FILE đến byte tập tin nhị phân phân „ Sau lần đọc tập tin, trỏ FILE di chuyển số byte kích thước (byte) khối liệu đọc được fseek(), fseek (), „ Các dùng di chuyển trỏ FILE #define SEEK SET SEEK_SET #define SEEK_CUR #define SEEK_END „ int fseek( fseek( FILE *fp *fp,, long int offset, int whence ); „ „ „ fseek di chuyển trỏ fp đến vị trí offset theo mốc whence offset: khoảng cách (byte) cần di chuyển tính từ vị trí tại (offset > 0: vềề phía cuối ố tập tin, offset < 0: ngược vềề đầu ầ tập tin) whence: SEEK SET: tính từ đầu tập tin SEEK_SET: SEEK_CUR: tính từ vị trí hành trỏ SEEK_END: tính từ cuối tập tin fseek trả về:: thành cơng cơng,, 0 di chuyển có lỗi ft ftell ftell() ll() ll() rewind() i d() „ rewind i d đặt lại l i vịị trí t í trỏ t ỏ vềề đầu đầ tập tậ tin ti void rewind ( FILE * fp ); tương đương với fseek ( fp fp,, 0L, SEEK_SET); „ ftell trả vị trí offset trỏ long int ftell ( FILE * fp ); Nếu có lỗi, lỗi, ftell trả -1L Ví d dụ: xác định đị h kí kích h thước h tập ậ tin i „ .// // khai kh i báo bá biến biế cNn N thận thậ if ( fp f = fopen f ( FileN Fil N ame, ame, “rb “rb” b” ) ) == N ULL ) fprintf(( stderr, fprintf stderr, “Cannot open %s %s\\n”, FileN ame ); else l { f k( fseek( fseek k( fp f , 0, SEEK_ENN D ); fp, ) FileSize = ftell ftell(( fp ); printf(( “File size : %d bytes printf bytes\\n “, FileSize ); fclose(( fp ); fclose } Vịị trí trỏ trỏ:: fgetpos() fgetpos g p () fsetpos() etpos() „ với tập tin có kích thước cực lớn fseek ftell bị giới hạn bời kích thước offset „ Dùng int fgetpos ( FILE **fp fp,, fpos_t *position); int fsetpos ( FILE **fp fp,, const fpos_t *position); Xó Xóa đổi tên tê tập tậ tin ti „ Th Thực hiệ xoáá int remove(const char *filename); filename); „ đổi tên tập tin int rename(const char *oldname *oldname,, const char **newname newname); ); Chú ý làm việc iệ với ới tập tậ tin ti „ Khi mở tập tậ tin ti filename, fil tậ tin tập ti phải hải nằm ằ ù thư th mục chương trình „ phải cung cấp đầy đủ đường dẫn đến tập tin vd: C: vd: C:\\baitap\ baitap\taptin.dat viết nào?? fp = fopen fopen(( “C:\ “C:\baitap\ baitap\taptin.dat”, ““rb rb”” ); „ SAI RỒI vìì cóó ký tự t đặc đặ biệt ‘\’ nên ê viết iết đú sẽẽ là:: fp = fopen fopen(( “C:\ “C:\\baitap baitap\\\taptin.dat”, ““rb rb”” ); Tham số dòng lệnh chương trình „ „ „ „ „ „ Khi gọi chạy chương trình trình,, cung cấp tham sốố dịng lệnh gọi chương trình trình ví dụ: dụ: dir A:\ A:\*.c /w “copy” copy , “A:\ “A: A:\*.c A:\ * c” “/w” /w hai tham số điều khiển chương trình trình command line arguments command arguments Các tham số dòng lệnh tham chiếu qua hai đối số khai báo hàm main main ( int argc, argc g , char * argv argv[ g []) { } argc: argument count argc: argv:: argument vector argv Th Tham sốố dòng dò lệ lệnh h – víí dụ d „ 4 6 8 „ // addint.c Ỉ addint.exe void main ((int int argc, argc, char * argv [ ]) { int res = 0; printf ((“ Program %s\ %s\n “, argv argv[0]); [0]); for ( int i = 1; i < argc argc;; i++ ) res + += atoi atoi((argc argc[[i]); printf (“ %d %d\\n”, res ); } G:\>addint –2 -2 G:\ 12 Đệ quy - Recursion Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp.HCM Tp HCM Thuật ậ toán đệệ quy q y „ „ „ Là mở rộng khái niệm thuật toán toán Tư tưởng giải toán đệ quy đưa toán tốn loại, tính chất (đồng dạng) cấp độ thấp hơn,, trình tiếp tục toán đưa cấp độ mà giải được Từ cấp độ ta lần ngược để giải toán cấp độ cao giải xong tốn ban đầu đầu Ví dụ: dụ: … định nghĩa giai thừa: thừa: n!=n*(nn!=n*(n-1)! với 0!= !=1 … Dãy Fibonacci Fibonacci:: f0=1, f1=1 fn =fn-1+fn-2 ∀n> n>11 … Danh sách liên kết kết ế … Phạm Thế Bảo „ Mọi thuật toán đệ quy gồm 02 phần phần:: … Phần sở sở:: Là trường hợp khơng cần thực lại thuật tốn (khơng yyêu cầu ggọi đệ qquy) quy) y) Nếu thuật toán đệ qquyy khơngg có pphần bị lặp vô hạn sinh lỗi thực hiện Đôi lúc gọi trường hợp dừng dừng … Phần ầ đệ quy quy:: Là phần thuật tốn có u cầu gọi đệ quy, yêu cầu thực h hiệ thuật h ậ toán ộ cấp ấ độ thấp hấ h Phạm Thế Bảo Các loại đệệ quy q y Có 03 loại đệ quy quy:: Đệ quy đuôi đđuôi: i: Là loại đệ quy mà cấp đệ quy có ột lời gọii đệ quy xuống ố cấp ấ thấp thấ thấp Ví dụ dụ:: i Tính í h giai i i thừa giaiThua(int n){ if(n==0 if(n== 0) giaiThua = 1; else giaiThua= n*giaiThua(nn*giaiThua(n-1); } Phạm Thế Bảo ... dịng lệnh chương trình „ „ „ „ „ „ Khi gọi chạy chương trình trình,, cung c? ??p tham sốố dịng lệnh gọi chương trình trình ví dụ: dụ: dir A: A:* .c /w “copy” copy , “A: “A: A:* .c A: * c? ?? “/w”... khiển chương trình trình command line arguments command arguments C? ?c tham số dòng lệnh tham chiếu qua hai đối số khai báo hàm main main ( int argc, argc g , char * argv argv[ g []) { } argc: argument... Fibonacci Fibonacci:: f0=1, f1=1 fn =fn-1+fn-2 ∀n> n>11 … Danh sách liên kết kết ế … Phạm Thế Bảo „ Mọi thuật toán đệ quy gồm 02 phần phần:: … Phần sở sở:: Là trường hợp không c? ??n th? ?c lại thuật

Ngày đăng: 08/05/2021, 19:20