stdio được thiết kế để được khá hiệu quả cho dù bạn thích đọc dữ liệu theo cách nào. Nếu bạn cần thực hiện đọc và ghi ký tự theo từng ký tự, chúng thường mở rộng tới các macro chỉ truy cập bộ đệm trừ khi nó đầy/trống. Đối với văn bản dòng io, hãy sử dụng puts
/fputs
và fgets
. (Nhưng KHÔNG BAO GIỜ sử dụng gets
vì không có cách nào kiểm soát số byte sẽ đọc!) Gia đình printf
(ví dụ: fprintf
) tất nhiên là cực kỳ hữu ích cho văn bản vì nó cho phép bạn bỏ qua xây dựng bộ đệm tạm thời trong bộ nhớ trước khi viết (và do đó cho phép bạn tránh suy nghĩ về tất cả các vấn đề cấp phát bộ nhớ, tràn, vv). fscanf
có xu hướng kém hữu ích hơn nhiều, nhưng chủ yếu là do rất khó sử dụng. Nếu bạn nghiên cứu tài liệu cho số fscanf
tốt và tìm hiểu cách sử dụng %[
, %n
và các số thông số, nó có thể rất mạnh mẽ!
Đối với các khối văn bản lớn (ví dụ: tải toàn bộ tệp vào bộ nhớ) hoặc dữ liệu nhị phân, bạn cũng có thể sử dụng các chức năng fread
và fwrite
. Bạn nên luôn vượt qua 1 cho đối số kích thước và số byte để đọc/ghi cho đối số đếm; nếu không nó không thể nói từ giá trị trả về bao nhiêu đã được đọc hoặc viết thành công.
Nếu bạn đang ở trên một hệ thống hợp lý POSIX-like (khá nhiều bất cứ điều gì), bạn cũng có thể sử dụng chức năng cấp dưới io open
, read
, write
, vv Đây là những KHÔNG một phần của tiêu chuẩn C nhưng phần của POSIX và các hệ thống không POSIX thường cung cấp các chức năng giống nhau nhưng có thể có hành vi hơi khác (ví dụ: các bộ mô tả tệp có thể không được đánh số tuần tự 0,1,2, ... như POSIX sẽ yêu cầu).
Nguồn
2010-07-07 11:26:32
đọc một cuốn sách, chẳng hạn như ngôn ngữ lập trình C. Và các hoạt động I/O thường không bị ràng buộc CPU. –