| Contents |

1 Foreword

Cánh cửa từ từ kẽo kẹt mở ra, để lộ một hành lang dài với những chồng sách truyền thuyết phủ bụi…

Thôi, có lẽ không phải vậy đâu.

Nhưng bạn đã tìm ra phần Tham chiếu Thư viện (Library Reference) của Beej’s Guide to C!

Đây không phải một tutorial, mà là một bộ manual page đầy đủ (hay man page theo kiểu gọi của mấy dân Unix), định nghĩa mọi hàm trong Thư viện chuẩn C, kèm ví dụ.

“Thưa ngài, cuốn này chứa mọi chữ của thứ tiếng mà chúng ta yêu quý.”
“Từng chữ một, thưa ngài?”
“Từng chữ một, thưa ngài!”
“Ồ, vậy thì, thưa ngài, tôi mong ngài không phiền nếu tôi cũng gửi đến vị bác sĩ lời chúc phản-miếng-bánh-ngụm (contrafribularities) nồng nhiệt nhất của mình.”

—Blackadder trêu Tiến sĩ Samuel Johnson

Thực ra có một số hàm bị bỏ ngoài guide này, đáng chú ý nhất là mấy hàm “safe” tuỳ chọn (có hậu tố _s).

Nhưng mọi thứ bạn có thể muốn thì chắc chắn đều có ở đây. Kèm ví dụ.

Chắc vậy.

1.1 Đối tượng

Guide này dành cho người đã thạo C ở mức kha khá.

Nếu bạn chưa thuộc nhóm đó mà muốn trở thành, tôi xin hết lòng, hoàn toàn không thiên vị, giới thiệu cuốn Beej’s Guide to C Programming1, có sẵn miễn phí ở bất cứ đâu Internet được bán.

1.2 Cách đọc cuốn này

Dùng mục lục hoặc index để tìm hàm hoặc chủ đề bạn cần.

Rồi lấy một tô ngũ cốc yêu thích ra, và chén thoải mái đống chữ nghĩa ngon lành trong đây.

1.3 Nền tảng và Compiler

Tôi sẽ cố bám vào ISO-standard C2 cổ điển. Ừ, phần lớn là vậy. Thi thoảng tôi có thể nổi hứng nói về POSIX3 hay gì đó, để xem đã.

Unix (Linux, BSD, v.v.) thử gõ cc hoặc gcc ngoài command line, có thể bạn đã có sẵn compiler rồi. Nếu chưa, tìm cách cài gcc hoặc clang trên distro của bạn.

Windows thử Visual Studio Community4. Hoặc, nếu bạn muốn trải nghiệm kiểu Unix (khuyến khích!), cài WSL5 rồi cài gcc.

Mac thì cài XCode6, nhớ bật command line tools.

Có rất nhiều compiler, và hầu như cái nào cũng dùng được cho cuốn này. Và compiler C++ sẽ compile được khá nhiều code C (nhưng không phải tất cả!). Tốt nhất là dùng compiler C thực thụ nếu có.

1.4 Trang chủ chính thức

Địa chỉ chính thức của tài liệu này là https://beej.us/guide/bgclr/7. Trước đây ở đây có một ghi chú về việc di chuyển khỏi máy chủ ở Chico State (trường cũ của tôi), nhưng đó là chuyện tỷ năm trước rồi và câu chữ vẫn còn đây chỉ vì nó được copy từ Network Guide sang, [hít thở] mà tôi đã khá lâu rồi không đọc lại toàn bộ.

Hết chuyện.

1.5 Chính sách Email

Nói chung tôi luôn sẵn lòng giúp trả lời câu hỏi qua email, cứ viết thoải mái, nhưng tôi không đảm bảo sẽ trả lời. Tôi sống khá bận, có những lúc đơn giản là không trả lời nổi. Những lúc đó tôi thường xoá luôn tin nhắn. Không phải chuyện cá nhân gì đâu; chỉ là tôi không bao giờ đủ thời gian để đưa ra câu trả lời chi tiết mà bạn cần.

Theo kinh nghiệm, câu hỏi càng phức tạp, tôi càng ít khả năng trả lời. Nếu bạn chịu khó thu hẹp câu hỏi trước khi gửi, và nhớ kèm mọi thông tin liên quan (như nền tảng, compiler, các thông báo lỗi bạn gặp, và bất cứ gì bạn nghĩ sẽ giúp tôi debug), bạn có cơ hội được trả lời cao hơn nhiều.

Nếu bạn không được trả lời, cứ cày thêm, thử tự tìm ra đáp án, và nếu nó vẫn lẩn trốn, hãy viết lại cho tôi với thông tin bạn đã thu thập được, và hy vọng chừng đó là đủ để tôi giúp được.

Giờ khi đã cằn nhằn bạn về cách nên và không nên viết thư cho tôi, tôi cũng muốn nói là tôi hết sức trân trọng mọi lời khen mà cuốn guide nhận được qua nhiều năm nay. Đó là một liều tinh thần thực sự, và tôi mừng khi biết nó đang được dùng cho mục đích tốt! :-) Cảm ơn nhé!

1.6 Mirror

Bạn hoàn toàn được hoan nghênh mirror trang này, dù công khai hay riêng tư. Nếu bạn mirror công khai và muốn tôi link tới từ trang chính, gửi cho tôi một dòng ở beej@beej.us.

1.7 Ghi chú cho người dịch

Nếu bạn muốn dịch guide sang ngôn ngữ khác, viết cho tôi ở beej@beej.us và tôi sẽ link tới bản dịch của bạn từ trang chính. Bạn có thể thêm tên và thông tin liên hệ của mình vào bản dịch.

Lưu ý các ràng buộc giấy phép ở mục Bản quyền và Phân phối bên dưới.

1.8 Bản quyền và Phân phối

Beej’s Guide to C Programming, Library Reference là Copyright © 2021 Brian “Beej Jorgensen” Hall.

Với một số ngoại lệ cụ thể cho source code và bản dịch (xem bên dưới), tác phẩm này được cấp phép theo Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. Để xem bản sao của giấy phép, vào https://creativecommons.org/licenses/by-nc-nd/3.0/ hoặc gửi thư tới Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Một ngoại lệ cụ thể đối với phần “No Derivative Works” của giấy phép là: guide này có thể được dịch tự do sang bất cứ ngôn ngữ nào, miễn là bản dịch chính xác và guide được in lại trọn vẹn. Các ràng buộc giấy phép áp dụng cho bản dịch giống như với bản gốc. Bản dịch cũng có thể kèm tên và thông tin liên hệ của người dịch.

Source code C xuất hiện trong tài liệu này được tuyên bố đưa vào public domain, hoàn toàn không bị ràng buộc giấy phép.

Các nhà giáo dục được khuyến khích tự do giới thiệu hoặc cung cấp bản sao của guide này cho học viên của mình.

Liên hệ beej@beej.us để biết thêm.

1.9 Lời đề tặng

Những chuyện khó nhất khi viết mấy cuốn guide này là:

Rất nhiều người đã giúp tôi qua quá trình này, và tôi muốn ghi công những ai đã góp phần làm nên cuốn sách này.

Cảm ơn! ♥


| Contents |