Các tài liệu tham khảo sớm nhất để fopen
mà tôi đã tìm thấy là trong ấn bản đầu tiên của "The C Programming Language" (K & R1) Kernighan & của Ritchie, được công bố vào năm 1978.
Nó cho thấy một thực hiện mẫu fopen
, có lẽ là một phiên bản đơn giản của mã trong việc thực hiện thư viện chuẩn C thời gian. Dưới đây là một phiên bản rút gọn của mã từ cuốn sách:
FILE *fopen(name, mode)
register char *name, *mode;
{
/* ... */
if (*mode != 'r' && *mode != 'w' && *mode != 'a') {
fprintf(stderr, "illegal mode %s opening %s\n",
mode, name);
exit(1);
}
/* ... */
}
Nhìn vào mã, mode
được dự kiến sẽ là một chuỗi 1 ký tự (không "rb"
, không có sự phân biệt giữa văn bản và nhị phân). Nếu bạn đã vượt qua chuỗi dài hơn, bất kỳ ký tự nào trong quá khứ đầu tiên đều bị bỏ qua âm thầm. Nếu bạn đã vượt qua mode
không hợp lệ, chức năng sẽ in thông báo lỗi và chấm dứt chương trình của bạn thay vì trả về một con trỏ rỗng (tôi đoán phiên bản thư viện thực sự không làm điều đó). Cuốn sách nhấn mạnh mã đơn giản về kiểm tra lỗi.
Thật khó để chắc chắn, nhất là khi sách không mất nhiều thời gian để giải thích tham số mode
, nhưng có vẻ như nó đã được xác định là một chuỗi chỉ để thuận tiện. Một nhân vật duy nhất cũng có thể làm việc, nhưng một chuỗi ít nhất làm cho việc mở rộng trong tương lai có thể xảy ra (một cái gì đó mà cuốn sách không đề cập đến).
Nguồn
2015-07-15 18:58:23
Wiki cộng đồng? – Romain
@Romain: Không, có câu trả lời rõ ràng ở đây. – GManNickG