Bạn đang xem bài viết Lập Trình C: Quản Lý Tập Tin Nhị Phân được cập nhật mới nhất trên website Rafs.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.
Đăng ký nhận thông báo về những video mới nhất
Các hàm dùng để quản lý các tập tin nhị phân cũng giống như các hàm sử dụng để quản lý tập tin văn bản. Tuy nhiên, chế độ mở tập tin của hàm fopen() thì khác trong trường hợp các tập tin nhị phân.
Mở một tập tin nhị phân
Dưới đây liệt kê các chế độ khác nhau của hàm fopen() trong trường hợp mở tập tin nhị phân:
rb : Mở một tập tin nhị phân để đọc
wb : Tạo một tập tin nhị phân để ghi
ab : Nối vào một tập tin nhị phân
r+b : Mở một tập tin nhị phân để đọc/ghi
w+b : Tạo một tập tin nhị phân để đọc/ghi
a+b : Nối vào một tập tin nhị phân để đọc/ghi
Giả sử nếu một tập tin xyz được mở để ghi, câu lệnh sẽ là:
FILE *fp; fp = fopen (“xyz”, “wb”);
Đóng một tập tin nhị phân
Ngoài tập tin văn bản, hàm fclose() cũng có thể được dùng để đóng một tập tin nhị phân. Nguyên mẫu của fclose như sau:
int fclose(FILE *fp);
, trong đó fp là một con trỏ tập tin trỏ đến một tập tin đang mở.
Ghi một tập tin nhị phân
Chẳng hạn như, một tập tin dữ liệu có thể bao gồm nhiều cấu trúc có cùng thành phần cấu tạo, hoặc nó có thể chứa nhiều mảng có cùng kiểu và kích thước. Và với những ứng dụng như vậy thường đòi hỏi đọc toàn bộ khối dữ liệu từ tập tin dữ liệu hoặc ghi toàn bộ khối vào tập tin dữ liệu hơn là đọc hay ghi các thành phần độc lập (nghĩa là các thành viên của cấu trúc hay các phần tử của mảng) trong mỗi khối riêng biệt.
Hàm fwrite() được dùng để ghi dữ liệu vào tập tin dữ liệu trong những tình huống như vậy. Hàm này có thể dùng để ghi bất kỳ kiểu dữ liệu nào. Nguyên mẫu của fwrite() là:
size_t fwrite(const void *buffer, size_t num_bytes, size_t count, FILE *fp);
Kiểu dữ liệu size_t được thêm vào C chuẩn để tăng tính tương thích của chương trình với nhiều hệ thống. Nó được định nghĩa trước như là một kiểu số nguyên đủ lớn để lưu giữ kết quả của hàm sizeof(). Đối với hầu hết các hệ thống, nó có thể được dùng như một số nguyên dương.
Buffer là một con trỏ trỏ đến thông tin sẽ được ghi vào tập tin. Số byte phải đọc hoặc ghi được cho bởi num_bytes. Đối số count xác định có bao nhiêu mục (mỗi mục dài num_bytes) được đọc hoặc ghi.
Đọc một tập tin nhị phân
Hàm fread() có thể được dùng để đọc bất kỳ kiểu dữ liệu nào. Nguyên mẫu của hàm là:
size_t fread(void *buffer, size_t num_bytes, size_t count FILE *fp);
buffer là một con trỏ trỏ đến vùng nhớ sẽ nhận dữ liệu từ tập tin. Số byte phải đọc hoặc ghi được cho bởi num_bytes. Đối số count xác định có bao nhiêu mục (mỗi mục dài num_bytes) được đọc hoặc ghi. Cuối cùng, fp là một con trỏ tập tin trỏ đến một stream đã được mở trước đó. Các tập tin đã mở cho những thao tác này phải mở ở chế độ nhị phân.
Các hàm fread() và fwrite() thường được gọi là các hàm đọc hoặc ghi không định dạng.
Miễn là tập tin được mở cho các thao tác nhị phân, hàm fread() và fwrite() có thể đọc và ghi bất kỳ kiểu thông tin nào. Ví dụ, chương trình sau đây ghi vào và sau đó đọc ngược ra một số kiểu double, một số kiểu int và một số kiểu long từ tập tin trên đĩa. Lưu ý rằng nó sử dụng hàm sizeof() để xác định độ dài của mỗi kiểu dữ liệu.
Ví dụ:
main () { FILE *fp; double d = 23.31 ; int i = 13; long li = 1234567L; if ((fp = fopen (“jak”, “wb+”)) == NULL) { printf(“Cannot open file “); exit(1); } fwrite (&d, sizeof(double), 1, fp); fwrite (&i, sizeof(int), 1, fp); fwrite (&li, sizeof(long), 1,fp); fclose (fp); if ((fp = fopen (“jak”, “rb+”)) == NULL ) { printf(“Cannot open file”); exit(1); } fread (&d, sizeof(double), 1, fp); fread(&i, sizeof(int), 1, fp); fread (&li, sizeof(long), 1, fp); printf (“%f %d %ld”, d, i, li); fclose (fp); }
Như chương trình này minh họa, có thể đọc buffer và thường nó chỉ là một vùng nhớ để giữ một biến. Trong chương trình đơn giản trên, giá trị trả về của hàm fread() và fwrite() được bỏ qua. Tuy nhiên, để lập trình hiệu quả, các giá trị đó nên được kiểm tra xem đã có lỗi xảy ra không.
struct struct_type { float balance; char name[80]; } cust;
Câu lệnh sau đây ghi nội dung của cust vào tập tin đang được trỏ đến bởi fp.
fwrite(&cust, sizeof(struct struct_type), 1, fp);
Hướng Dẫn Đọc, Ghi File Nhị Phân Trong Lập Trình Csharp
Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách đọc và ghi file nhị phân (Binary File) trong lập trình C#.
Vậy tập tin nhị phân là gì?
Tập tin nhị phân là một tập tin không phải là tập tin văn bản, tập tin được lưu trữ ở dữ liệu thô gồm các số 0 và 1.
Trong C#, có cung cấp cho chúng ta 2 lớp BinaryReader và BinaryWriter, giúp chúng ta làm việc với tập tin nhị phân một cách dễ dàng.
Hình ảnh mẫu của một tập tin nhị phân:
Souce code đọc và ghi file nhị phân trong C#:
using System; using System.IO; namespace BinaryFileApplication { class Program { static void Main(string[] args) { BinaryWriter bw; BinaryReader br; int i = 13; double d = 2.56317; bool b = true; string s = "Hello World !!"; try { bw = new BinaryWriter(new FileStream("mydata", FileMode.Create)); } catch (IOException e) { Console.WriteLine(e.Message + " Cannot create file."); return; } try { bw.Write(i); bw.Write(d); bw.Write(b); bw.Write(s); } catch (IOException e) { Console.WriteLine(e.Message + " Cannot write to file."); return; } bw.Close(); try { br = new BinaryReader(new FileStream("mydata", FileMode.Open)); } catch (IOException e) { Console.WriteLine(e.Message + " Cannot open file."); return; } try { i = br.ReadInt32(); Console.WriteLine("Integer data: {0}", i); d = br.ReadDouble(); Console.WriteLine("Double data: {0}", d); b = br.ReadBoolean(); Console.WriteLine("Boolean data: {0}", b); s = br.ReadString(); Console.WriteLine("String data: {0}", s); } catch (IOException e) { Console.WriteLine(e.Message + " Cannot read from file."); return; } br.Close(); Console.ReadKey(); } } }Kết quả:
Thanks for watching!
Form Trong Lập Trình C# Winform
Dẫn nhập
Sức mạnh của hệ điều hành Window là không thể chối cãi. Và để tạo nên sức mạnh đó không thể thiếu những ứng dụng mạnh mẽ. Vậy để tạo ra những ứng dụng đó, người lập trình viên cần học cái gì?
Cùng nhau tìm hiểu serial Lập trình Winform.
Nội dung
chúng tôi
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowGUI { public partial class fMain : Form { public fMain() { InitializeComponent(); } int i = 0; { i++; } } }
Form1.Designer.cs
namespace WindowGUI { partial class fMain { private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fMain)); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.SuspendLayout(); chúng tôi = new System.Drawing.Font("Mistral", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.button1.Location = new System.Drawing.Point(436, 60); chúng tôi = "button1"; chúng tôi = new System.Drawing.Size(87, 23); this.button1.TabIndex = 0; chúng tôi = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.UseWaitCursor = true; this.button2.Location = new System.Drawing.Point(199, 59); chúng tôi = "button2"; chúng tôi = new System.Drawing.Size(75, 23); this.button2.TabIndex = 1; chúng tôi = "button2"; this.button2.UseVisualStyleBackColor = true; this.button2.UseWaitCursor = true; this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Control; this.BackgroundImage = global::WindowGUI.Properties.Resources.Kteam_vector_copy_2; this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.ClientSize = new System.Drawing.Size(885, 487); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Cursor = System.Windows.Forms.Cursors.WaitCursor; this.DoubleBuffered = true; this.ForeColor = System.Drawing.SystemColors.MenuHighlight; chúng tôi = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); chúng tôi = "fMain"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; chúng tôi = "HowKteam.com"; this.TransparencyKey = System.Drawing.Color.Yellow; this.UseWaitCursor = true; this.WindowState = System.Windows.Forms.FormWindowState.Maximized; this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; } }
Download project
Kết luận
Bài sau chúng ta sẽ cùng tìm hiểu về Label trong lập trình C# Winform.
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện chúng tôi để nhận được sự hỗ trợ từ cộng đồng.
Phần Mềm Lập Trình C/C++ Phiên Bản Mới Nhất(Code::blocks)
Phần mềm Code::Blocks
Chọn phiên bản mình muốn download. Nếu bạn dùng Windows thì hãy chọn phiên bản ” chúng tôi ” như hình dưới.
Rồi ngồi đợi vài phút chờ tải xong
Chạy file cài đặt vừa tải về, ở đây tôi chạy file ” chúng tôi “.
Cửa sổ cài đặt xuất hiện, bạn cứ chọn ” Next ” là được thôi
Cái này quan rất quan trọng vì nếu bạn chọn cấu hình Code::Blocks sai thì sau này có thể sẽ không thể chạy được.
Sau đó thiết lập các thông số cho 2 trình Compiler (biên dịch) và Debugger (gỡ lỗi).
(For CodeBlocks 13.12 For Windows) – Mở cửa sổ CodeBlocks, kích
“Settings” menu, kích “Compiler…”. Xuất hộp thoại Compiler Settings, tại “Selected Compiler”, chọn “GNU GCC Compiler”, Chọn “Toolchain Executables” và kiểm tra các thông tin “Compiler’s Installation Directory”. Được đặt là “MinGW” tên thư mục con trong thư mục cài đặt CodeBlocks, ví dụ, thư mục của CodeBlocks là “c:Program Filescodeblocks”, thì trình biên dịch là “c:Program FilescodeblocksMinGW”.
Tương tự như vậy, hãy kiểm tra đường dẫn của chương trình Debugger. Kích “Settings” menu, kích “Debugger …” và chọn “GDB / CDB debugger/ Default”. Trong “Executable path”, cung cấp tên đầy đủ đường dẫn của tệp “gdb.exe”, ví dụ, “c : Program Files CodeBlocks MinGW bin chúng tôi “.
Kích menu File/ New/ Empty file, xuất hiện cửa sổ soạn thảo mới với tên Untitled1… Sau đó kích menu “File/ Save”, đặt tên tệp mới (ví dụ: chúng tôi và kích nút Save/ chọn tiếp OK, và tiến hành soạn thảo mã nguồn cho bài toán mới. Trước khi đặt tên ta có thể soạn thảo luôn, nhưng có thể không được cung cấp hỗ trợ về định dạnh, soạn thảo hoặc những rủi do mất file.
Ví dụ: Viết chương trình nhập vào hai số nguyên a và b từ bàn phím, in lên màn hình tổng giá trị của hai số a +b như sau:
Nhấn Ctrl+F9 để dịch chương trình, nếu xuất hiện lỗi như hình ảnh trên. Ta quan sát dòng đánh dấu (ô vuông nhỏ màu đỏ) và các gợi ý về lỗi tại Biuld messages để xác định lỗi và sửa lại cho đúng, sau đó nhấn Ctrl+F9 để kiểm tra tiếp (đến khi hết lỗi).
Nhấn phím F9 để vừa dịch và chạy chương trình (tức ban đầu là dịch chương trình, nếu có lỗi (là lỗi cú pháp hay lỗi văn phạm), sẽ dừng lại ở vị trí gây lỗi. Nếu không lỗi, chương trình được thực thi luôn)
Nếu soạn thảo và thực hiện chương trình theo cách này, ta sẽ không sử dụng được chương trình Debugger (gỡ lỗi). Cách này thường được sử dụng khi chương trình không còn lỗi về văn phạm nhưng gặp phải lỗi về giải thuật – output sai. Để sử dụng tính năng Debugger ta sẽ nghiên mục tiếp theo.
Tạo file project và file CPP.
Bước 1: Tạo project (dự án) mới:
Project là một file của Codeblocks nó có thể quản lý nhiều file khác. Để tạo một Project ta lần lượt thực hiện theo các bước sau:
Kích menu File/ New/ Project …/ Chọn Console Application, kích nút Go/ Chọn C++/ kích Next. Xuất hiện hộp thoại sau:
Project title: tên tiêu đề cho project
Folder to create project in: Gõ hoặc chọn thư mục lưu file. Project filename: gõ tên project cần tạo
Sau khi hoàn thành, kích nút Next.
Xuất hiện hộp thoại chọn trình biên dịch và nơi lưu trữ (thường để mặc định như hình ảnh trên). Kích Next, cửa Codeblocks: project xuất hiện, tệp chúng tôi với các dòng lệnh có sẵn:
Xuất hiện cửa sổ Codeblocks với tên project (chuong1) vừa tạo và đã sẵn sàng để viết chương trình của bạn. Cần lưu ý rằng mục tiêu là Debug, mà sẽ cho phép bạn sử dụng các trình gỡ lỗi (debugger) để tìm lỗi.
Trong khung Management của màn hình (Shift-F2 để ẩn/hiện), bạn sẽ thấy các file đó là một phần của dự án trong tab Project. Để xem các tập tin nguồn, bấm vào cộng [+] ‘s để mở rộng không gian làm việc và thư mục con của nó, muốn thu nhỏ ta kích vào [-] và muốn hiện nội dung của tệp ta kích đúp vào tên tệp.
Khi tạo một project mới, nó luôn tạo sẵn file chúng tôi chỉ để in ra màn hình Console (Dos- nền đen, chữ màu trắng) dòng chữ “Hello World!” như đã giới thiệu ở phần đầu của giáo trình này.
Bước 2: Dịch và chạy chương trình (đã giới thiệu phần trước).
Để soạn thảo mã nguồn mới, bạn có thể sửa trực tiếp vào tệp này hoặc tạo tệp mới bằng cách:
Kích menu File/ New/ Empty file, xuất hiện thông báo:
Chọn “Yes” để thêm tệp mới vào project hiện tại và đặt tên tệp/ Save, xuuast hiện hộp thoại Multiple selection, đánh dấu vào hai mục Debugg và Release và kích OK, cửa sổ soạn thảo tệp vừa đặt tên xuất hiện. NLT bắt đầu soạn thảo mã nguồn, dịch và chạy chương trình.
Để xóa tệp khỏi cửa sổ Management: kích chuột phải vào tên tệp/ chon remove file from project hoặc kích menu Project/ chọn Remove file…/ bỏ dấu tích tại tên tệp muốn xóa/ chọn nút OK.
Nếu ta đã có sẵn tệp trên máy, để thêm vào project hiện tại dịch và chạy chương trình ta thực hiện: Kích menu Project/ chọn Add file…/ Chọn đến tệp cần thêm/ kích Open, sau đó tiến hành dịch và chạy bình thường.
Hướng dẫn Debug chương trình (trình gỡ lỗi – debugger)
Để loại bỏ tệp khỏi project hiện thời ta làm như sau:
Kích file lên tên tệp CPP tại khung trái – project/ chọn Remove file from project.
Kích phải vào nền trắng trong khung trái – project/ chọn clean workspace để đảm bảo xóa các thông tin, dữ liệu đã debug trước đó.
Trước tiên, hãy đặt trỏ văn bản tại nơi chương trình debug bắt đầu (dòng 11). Kích menu Debug/ chọn Run to cursor (hoặc nhấn phím F4), nếu xuất hiện thông báo … ta chọn Yes để tiếp tục.
Đánh dấu vị trí bắt đầu và kết thúc Debug: đặt trỏ văn bản vào vị trí, kích Debug/ Toggle breakpoint (phím F5).
Sau đó kích menu Debug/ Start/ Continue (phím F8) để bắt đầu quá trình Debugger.
Xuất hiện hình tam giác nhỏ màu vàng (gọi là breakpoint) tại dòng bắt đầu debug và cửa số Watches (new) để theo dõi giá trị của các biến trong chương trình khi ta đi qua từng dòng lệnh trong chương trình nguồn. Trong trường hợp cửa sổ này chưa xuất hiện thì kích menu Debug/ Dubugging Windows/ Watchs. Và màn hình Console – nền đen (có thể sẽ ẩn sau cửa sổ Codeblocks).
Bắt đầu quá trình debugging, máy tính tính thực hiện dòng lệnh hiện thời và xem giá trị các biến thay đổi ta nhấn phím F7 con trỏ và Breakpoint sẽ lần lượt nhảy xuồng các dòng tiếp theo (mỗi lần nhấn phím F7, hãy dừng lại một chút để kiểm tra việc thực hiện lệnh và giá trị các biến có tương ứng hay không trên cửa sổ Watches).
Nhấn phím F7 lần 1.Nhấn phím F7 lần 2.
Máy thực hiện dòng lệnh 12. Dòng lệnh này xuất ra màn hình Console:
Máy thực hiện dòng lệnh 11 gồm:
++x, x=x+y, y- nên (x=9,y=2 và z=12)
Tiếp tục nhấn phím F7 đến dòng lệnh 19, ta được kết quả trên cửa sổ Watches là:
Để kết thúc debug, kích menu Debug/ Stop debugger
Có gì chưa hiểu rất mong nhận được sự góp ý của quý bạn!
#bloglaptrinhcoban.blogspot.com
Cập nhật thông tin chi tiết về Lập Trình C: Quản Lý Tập Tin Nhị Phân trên website Rafs.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!