Xin chào, và chào mừng trở lại.
Trong bài giảng này, tôi muốn nói về việc ghi vào một tệp.
Chúng tôi sẽ tập trung khi ghi vào tệp văn bản.
Những gì chúng ta sẽ tìm hiểu về là cách bạn có thể viết ký tự, cách bạn có
thể viết chuỗi và cách bạn có thể viết đầu ra được định dạng.
Ba cách cũng chúng tôi đã có thể đọc.
Vì vậy, có ba chức năng bạn thực sự phải
quen thuộc để làm những điều này.
Thao tác ghi đơn giản nhất là được cung cấp trong hàm fputc.
Vì vậy, giống như có một fgetc để đọc ký tự, có
một fputc để viết ký tự.
Điều này sẽ viết một ký tự vào tệp văn bản, fputc.
Không hiệu quả như viết chuỗi, nhưng đôi khi cần thiết.
Nó nhận một số nguyên làm tham số đầu tiên và một con trỏ tệp làm
tham số thứ hai và trả về một số nguyên.
Hàm viết ký tự được chỉ định bởi
đối số đầu tiên cho tệp được xác định bởi đối số thứ hai.
Vì vậy, con trỏ tệp đại diện cho những gì nó luôn làm: tệp mà
bạn muốn ghi vào.
Và sau đó là nhân vật bạn thực sự muốn ghi vào
là tham số đầu tiên của bạn.
Ký tự trả về là gì đã được viết nếu thành công.
Hãy nhớ rằng, nếu nó trả về eof, nó có nghĩa là nó là một thất bại.
Nếu nó trả về bất kỳ điều gì khác ngoài eof, nó có nghĩa là nó đã thành công.
Trong thực tế, các ký tự được không thường được ghi vào một
tệp vật lý từng cái một.
Nó cực kỳ kém hiệu quả.
Hàm putc là tương đương với fputc.
Bạn cũng thường thấy điều này được sử dụng.
Nó yêu cầu các đối số giống nhau và kiểu trả về cũng vậy.
Sự khác biệt giữa chúng là rằng putc có thể được triển khai
trong thư viện chuẩn dưới dạng macro.
Trong khi đó, fputc là một chức năng như vậy.
Không phải là quá nhiều khác biệt, nhưng chúng tôi chưa tìm hiểu về macro.
Vì vậy, chúng tôi sẽ gắn bó với fputc để viết các ký tự đơn.
Và ví dụ, nó khá đơn giản.
Điều đầu tiên bạn phải làm như mọi khi là bạn phải mở tệp.
Trước đó, chúng tôi tuyên bố biến, chúng tôi khai báo một con trỏ tệp, nên được
khởi tạo giá trị null.
Và sau đó là số nguyên của chúng tôi chúng tôi sẽ viết.
Khi chúng tôi mở tệp của mình, bạn sẽ lưu ý rằng chúng tôi thực hiện một w hoặc một w cộng.
W có nghĩa là chúng ta sẽ chỉ viết, bạn không thể đọc.
W plus có nghĩa là bạn có thể viết và đọc.
Trong trường hợp này, chúng ta có thể viết và đọc.
Ở đây chúng ta có một vòng lặp for.
Chúng tôi đang trải qua tất cả ký tự bắt đầu từ 33 đến 100.
Khi đây là những số nguyên, cái gì điều này có nghĩa là ký
tự được đại diện trong bảng ASCII.
Vì vậy, nếu bạn viết ký tự chẳng hạn 59, bạn phải tra cứu nó trong bảng ASCII để
xem nó đại diện cho những gì, nhưng nó sẽ là một nhân vật thực tế.
Đây chúng tôi chỉ đang viết ASCII có giá trị từ 33 đến 100
và chúng tôi đang nói fputc char fp.
Và bạn có thể sử dụng chuyển đổi nếu bạn muốn tạo
các giá trị và số nguyên ASCII, bạn chỉ có thể sử dụng một atoi.
Vì vậy, nếu bạn muốn viết ký tự c, bạn có thể nói fputc atoi và
sau đó đặt c trong dấu ngoặc kép.
Điều đó cũng sẽ tốt bởi vì nó sẽ chuyển đổi ASCII
thành một số nguyên và viết nó.
Nhưng đối số đầu tiên là một số nguyên, vì vậy bạn phải viết một số nguyên.
Đối số thứ hai là tệp của chúng tôi con trỏ, khá đơn giản ở đó.
Và điều cuối cùng chúng ta phải làm là chúng ta phải đóng tệp đó.
Chúng tôi có lẽ cũng muốn đặt con trỏ fp thành null.
Nhưng một lần nữa, nó nhận một số nguyên.
Vì vậy, hãy cẩn thận ở đó.
Nó luôn được đại diện trong bảng ASCII.
Nhưng bạn có thể chuyển đổi thực tế ký tự hai số nguyên bằng cách sử dụng atoi.
Làm thế nào về việc viết một chuỗi sang một tệp văn
bản, hữu ích hơn, hiệu quả hơn nhiều.
Đây là nơi bạn sử dụng chức năng fputs.
Điều này sẽ cho phép bạn ghi vào bất kỳ tệp hoặc luồng nào.
Nó tương tự như đồ dùng, nó lấy một chuỗi phí không đổi mà bạn muốn viết
dưới dạng tham số đầu tiên đến con trỏ.
Và nó mất một, như thứ hai của chúng tôi tham số, con trỏ tệp,
tệp bạn muốn ghi vào.
Và sau đó nó trả về một int.
Vì vậy, đối số đầu tiên là trỏ chuỗi ký tự
mà bạn muốn viết.
Đối số thứ hai là tệp chính con trỏ và hàm sẽ viết các ký
tự từ một chuỗi cho đến khi nó đạt đến dấu chấm dứt null.
Nó không viết giá trị rỗng ký tự terminator vào tệp, vì vậy bạn
phải viết nó một cách rõ ràng.
Điều này có thể làm phức tạp mọi thứ vì khi bạn đọc lại dữ
liệu, nó có thể có độ dài thay đổi và nó sẽ không kết thúc ở dấu chấm hết null.
Vì vậy, bạn phải-- Mong đợi
nó để viết một dòng văn bản có ký tự
dòng mới ở cuối.
Vì vậy, hãy đảm bảo rằng bạn đã quen thuộc với
dấu chấm dứt null và viết nó một cách rõ ràng bằng fputc, một ký tự đơn hoặc viết nó và về cơ bản nó
sẽ thêm ký tự dòng mới ở cuối sau khi bạn viết nó.
Vì vậy, nó mong đợi rằng mới ký tự dòng ở đó.
Bạn phải xác định rõ ràng điều đó.
Việc này thật thẳng thắn về mặt mã.
Bạn chỉ nói fopen.
Fputs, viết một chuỗi trong dòng mới bằng cách sử dụng con trỏ tệp.
Và sau đó một thông tin khác ở đây viết một chuỗi khác và sau đó bạn đóng nó lại.
Vì vậy, trong trường hợp này, chúng tôi đã viết hai chuỗi, hai dòng mã thực sự
hoặc hai dòng trong tệp và chúng tôi đã mở tệp bằng w plus
để đọc và ghi.
Các ví dụ viết là khá đơn giản.
Bạn chỉ cần gọi một vài hàm, fopen, sau đó fputs và sau đó fclose.
Bây giờ để viết đầu ra được định dạng, chúng tôi sẽ sử dụng fprintf.
Một lần nữa, bạn sẽ nhận thấy rằng với scanf để đọc
và nhập liệu và printf, bạn chỉ cần thêm fprefix trước hàm và bạn
đang viết đầu ra được định dạng.
Vì vậy, để viết đầu ra được định dạng với fprintf, nó trả về một số nguyên.
Nó có một luồng tệp dưới dạng tham số đầu tiên
và sau đó là các chỉ định định dạng được theo sau bằng dấu phẩy với số lượng đối
số thay đổi cho mỗi định dạng specifier giống như printf thực sự.
Đối số đầu tiên của hàm là con trỏ tới đối tượng tệp.
Và sau đó đối số thứ hai là số lượng đối số biến đó.
Đó là một chuỗi c chứa một hoặc nhiều mục sau,
ký tự khoảng trắng, không phải khoảng trắng ký tự, thông số định dạng.
Và một lần nữa, nó rất tương tự như printf.
Nhưng thực ra bạn đang ghi vào một tệp.
Vì vậy, bạn có thể viết theo định dạng xuất ra một tệp.
Nếu nó thành công, nó sẽ trở lại số lượng ký tự được viết.
Nếu không, nó sẽ trả về một số âm
nếu nó không thành công.
Nó trông giống như thế này.
Bạn bao gồm tiêu đề IO tiêu chuẩn.
Bạn tạo con trỏ tệp của mình.
Sau đó, bạn sử dụng con trỏ tệp của mình để mở một số tệp văn bản, hãy sử dụng nó
cho w plus để đọc và viết và sau đó bạn chỉ cần nói fprintf.
Trong trường hợp này, chúng tôi đang nói fprintf.
Chúng tôi đang chỉ định tệp con trỏ và sau đó chúng tôi chỉ định bốn chuỗi được
phân tách bằng dấu khoảng trắng và sau đó là một phần trăm d.
Và chúng tôi đang viết xin chào, số của tôi là 555.
Vì vậy, tệp thực sự sẽ có dữ liệu được định dạng khi bạn viết nó.
Hãy xem xét điều này trong các khối mã và xem nó trông như thế nào.
Vì vậy, không có nhiều mã ở đây.
Chúng tôi chỉ có một vài dòng mã.
Ở dòng thứ tư, chúng tôi tạo con trỏ tệp của chúng tôi.
Và một lần nữa, chúng tôi sẽ muốn khởi tạo này thành null.
Sau đó, chúng tôi, ở dòng thứ sáu, chúng tôi gọi là fopen.
Và chúng tôi nói rằng mở tệp. txt, vì vậy tập tin. txt phải tồn tại và nơi tệp
nguồn c đang chạy hoặc nếu bạn đang thực thi chương trình theo cách thủ công
ở bất kỳ nơi nào có thể thực thi được.
Chúng tôi sẽ mở ra để đọc và viết.
Sau khi chúng tôi đã mở nó ra, chúng tôi muốn đảm bảo
rằng con trỏ tệp không rỗng.
Vì vậy, chúng tôi muốn nói rằng không fp.
Nếu nó không phải là null, thì chúng tôi có thể bắt đầu ghi dữ liệu.
Và trong trường hợp này, ở dòng 9, chúng tôi sẽ ghi dữ liệu được định dạng.
Vì vậy, những gì chúng tôi sẽ viết là chúng ta sẽ viết một chuỗi,
hai chuỗi ba chuỗi, bốn chuỗi và sau đó là một số nguyên.
Và sau đó các thông số tiếp theo là chỉ các chuỗi được phân tách bằng
dấu phẩy cũng như số nguyên của chúng ta ở cuối.
Tôi chỉ phải sửa đôi này dấu ngoặc kép bởi vì nó không hoạt động đúng, vì vậy
555 ở ngay cuối ở đó.
Và nó sẽ đóng tệp và trả lại.
Vì vậy, hãy tiếp tục và cố gắng xây dựng cái này và chạy nó và chúng ta sẽ không thấy bất kỳ đầu
ra thực sự nào để chạy.
Chúng ta sẽ phải xem xét ở dạng tệp trông như thế nào.
Vì vậy, khi chúng tôi biên dịch tệp này, bạn muốn đảm bảo rằng
câu lệnh if của bạn nói không bằng null.
Vì vậy, khi chúng tôi chạy điều này, một lần nữa, bạn sẽ không thấy
bất kỳ đầu ra nào, nó sẽ chạy.
Và sau đó khi bạn nhìn vào tệp bên trong thư mục, bạn sẽ thấy
rằng nó chứa đầu vào trong một dòng, xin chào, tên tôi là fpp hoặc ở số 555.
Vì vậy, đó là cách bạn có thể ghi đầu ra được định dạng.
Nó khá đơn giản.
Bạn có thể thêm mới dòng nếu bạn muốn.
Nó sẽ thêm một dòng mới vào cuối, nhưng bạn có thể đặt dấu gạch chéo ngược n ở đây.
Nó hoạt động giống như printf.
Một lần nữa, chúng ta phải chạy nó, chúng ta không thực sự thấy bất kỳ đầu ra thú vị nào
cho đến khi bạn nhìn vào tệp.
Và trong trường hợp đó, bạn sẽ thấy một nguồn cấp dữ liệu dòng.
Vì vậy, việc ghi đầu ra vào một tệp khá đơn giản.
Bạn muốn viết các ký tự,
bạn làm fputc, bạn muốn viết chuỗi fput, đầu ra được định dạng fprintf.
Chúng tôi sẽ có một số thách thức giúp bạn
làm quen nhiều hơn với điều này, nhưng khá dễ dàng để ghi đầu ra vào tệp văn bản.
Cảm ơn bạn.