1. Các thư viện chuẩn trong C

Ngôn ngữ lập trình C được phát triển vào những năm 1972. Sau này, ngôn ngữ lập trình C dần trở thành một ngôn ngữ lập trình phổ biến nhất thế giới. Các phần mềm hiện đại này nay vẫn thường xuyên được xây dựng thông qua ngôn ngữ C. Để các phần mềm được xây dựng một cách hoàn chỉnh, lập trình viên C cần phải sử dụng sự hộ trở của các hàm, hằng số, thư viện….Trong đó có một số thư viện điển hình khi lập trình C căn bản ta đã từng biết như: <stdio.h>, <stdlib.h>, <math.h>…

Trong C cũng cấp sẵn cho người lập trình khá nhiều thư viện nhằm hỗ trợ thực hiện nhanh chóng một nhiệm vụ. Nếu như bạn đã từng học về ngôn ngữ C căn bản chắc hẳn đã quá quen thuộc với các thư viện: <stdio.h>, <stdlib.h>, <math.h>…ngoài ra, ngôn ngữ C còn cung cấp một số thư viện bổ xung ở bảng bên dưới:

Tên thư viện Mô tả #include <assert.h> Thư viện C cung cấp một macro gọi là assert có thể được sử dụng để kiểm tra một giả định được tạo bởi chương trình và in một thông báo chẩn đoán tìm lỗi nếu giả định này là false. #include <ctype.h> Thư viện xử lý và kiểm tra và ánh xạ các ký tự. #include <errno.h> Thư viện định nghĩa biến nguyên errno, được thiết lập bởi system call. #include <float.h> Thư viện cung cấp các hằng số liên quan đến giá trị số trong phạm vi số thực. #include <limits.h> Thư viện xác định các thuộc tính đa dạng của các kiểu biến khác nhau. #include <locale.h> Thư viện định nghĩa các thiết lập riêng về vị trí, chẳng hạn như định dạng date và các biểu tượng về currency #include <math.h> Thư viện cung cấp các hằng số và các hàm toán học. #include <signal.h> Thư viện định nghĩa một kiểu biến sig_atomic_t, hai lời gọi hàm, và một số macro để xử lý các tín hiệu khác nhau được báo cáo trong khi thực thi một chương trình. #include <stdarg.h> Thư viện định nghĩa một kiểu biến va_list và 3 macro mà có thể được sử dụng để lấy các tham số trong một hàm khi số tham số là chưa được biết. #include <stddef.h> Thư viện chuẩn định nghĩa các kiểu biến và macro đa dạng. #include <stdio.h> Thư viện chuẩn định nghĩa 3 kiểu biến, một số macro và các hàm đa dạng để thực hiện input và output. #include <stdlib.h> Thư viện cung cấp các hàm được sử dụng để cấp phát bộ nhớ động. #include <string.h> Thư viện cung cấp các hàm xử lý chuỗi. #include <time.h> Thư viện cung cấp các hàm xử lý và thao tác với kiểu thời gian.

Các hàm được tạo ra và thuộc trong một số thư viện chuẩn trong C nhằm mục đích tiện lợi hơn trong việc lập trình. Trong quá trình làm việc với C một cách căn bản, chúng ta đã từng gọi và sử dụng các hàm như printf() hay scanf() trong thư viện <stdio.h> để thực hiện các thao tác nhập xuất căn bản. Tuy nhiên, trong C còn cung cấp thêm nhiều các hàm nằm trong các thư viện chuẩn khác để sử dụng cho các mục đích khác nhau:

Tên hàm Mô tả abort() Hàm được sử dụng ngừng thực thi chương trình một cách bất thường. abs() Trả về trị tuyệt đối của một số nguyên đầu vào. atexit() Được sử dụng để gọi hàm func khi chương trình kết thúc atof() Chuyển đổi một chuỗi từ str sang số thực (double) atoi() Chuyển đổi một chuỗi từ str sang số nguyên (int) atol() Chuyển đổi một chuỗi từ str sang kiểu long int calloc() Cấp phát bộ nhớ được yêu cầu và trả về một con trỏ tới nó. ldiv() Chia tử số cho mẫu số exit() Kết thúc tiến trình đang gọi. fclose() Đóng file đã được mở. ferror() Kiểm tra lỗi khi mở file. fflush() Xóa bộ nhớ đệm đầu ra của một Stream. fgetc() Lấy ký tự kế tiếp (một unsigned char) từ Stream fgetpos() Lấy vị trí file hiện tại của Stream và ghi nó tới pos fgets() Đọc một dòng từ Stream đã cho và lưu trữ nó vào trong chuỗi được trỏ bởi str. fopen() Mở file theo chế độ định trước. fprintf() Gửi output đã được định dạng tới một Stream. fputc() Ghi một ký tự (một unsigned char) đã được xác định bởi tham số char tới Stream đã cho. fputs() Ghi một chuỗi tới Stream đã xác định. fread() Đọc dữ liệu từ Stream vào một mảng được trỏ tới. free() Giải phóng bộ nhớ đã được cấp phát trước đó bởi một lời gọi tới calloc, malloc, hoặc realloc. fscanf() Đọc input đã được định dạng từ một Stream. fwrite() Ghi dữ liệu từ mảng được trỏ bởi ptr tới Stream đã cho. getc() Lấy ký tự kế tiếp (một unsigned char) từ Stream đã cho getchar() Lấy một ký tự (một unsigned char) từ stdin gets() Đọc một dòng từ stdin và lưu trữ nó bên trong chuỗi được trỏ bởi str malloc() Cấp phát bộ nhớ được yêu cầu và trả về một con trỏ tới nó. memcpy() Sao chép n ký tự từ str2 tới str1. memchr() Tìm kiếm sự xuất hiện đầu tiên của ký tự c (một unsigned char) trong n byte đầu tiên của chuỗi được trỏ tới bởi tham số str. memcmp() So sánh n byte đầu của hai chuỗi str1 và str2. memset() Sao chép ký tự c (một unsigned char) tới n ký tự đầu tiên của chuỗi được trỏ tới bởi tham số str. printf() Gửi output đã được định dạng tới một stdout. putc() Ghi một ký tự (một unsigned char) được xác định bởi tham số char tới Stream đã cho. putchar() Ghi một ký tự (một unsigned char) đã được xác định bởi tham số char tới stdout. puts() Ghi một chuỗi str tới stdout (không ghi ký tự null). remove() Xóa filename đã cho để nó không thể truy cập được nữa. rename() Đổi tên file thành tên mới. scanf() Đọc input đã được định dạng từ stdin. strchr() Tìm kiếm sự xuất hiện đầu tiên của ký tự c (một unsigned char) trong chuỗi được trỏ tới bởi tham số str. strcmp() So sánh chuỗi được trỏ tới bởi str1 với chuỗi được trỏ tới bởi str2. strcpy() Sao chép chuỗi được trỏ tới bởi str2 tới str1. strlen() Độ dài của chuỗi str (không bao gồm ký tự null kết thúc). strncat() Nối chuỗi mới vào sau chuỗi ban đầu

Trong những bài sau, chúng ta sẽ đi chi tiết hơn vào các hàm được đề cập ở bên trên. Để sử dụng được các hàm trên một cách dễ dàng bạn đọc hãy chắc chắn rằng bản thân đã có kiển thức căn bản về ngôn ngữ C.