Xem xét thư viện tiêu chuẩn C

Thư viện Tiêu chuẩn là một tập hợp các chức năng, vĩ mô và định nghĩa được cung cấp như một phần của ngôn ngữ lập trình ISO C. Nó cung cấp cho các nhà phát triển một nền tảng di động, kiểm tra kỹ lưỡng cho các công việc thông thường như nhập/ xuất, quản lý dây, tính toán, và thao tác ngày/ giờ. Bằng cách dựa vào thư viện chuẩn thay vì viết giải pháp tùy chỉnh, bạn giảm khả năng đọc, cải thiện khả năng đọc, và đảm bảo chương trình của bạn luôn luôn hoạt động qua nền tảng và trình biên dịch khác nhau.

Thư viện được tổ chức thành nhiều tập tin tiêu đề, mỗi nhóm chức năng liên quan. hiểu những gì mỗi người dẫn đầu đề nghị là bước đầu tiên để viết và duy trì mã C. Bên dưới chúng tôi khám phá những tiêu đề quan trọng nhất và các chức năng cốt lõi của họ, cùng với những ví dụ thực tế để cho thấy làm thế nào họ đơn giản hóa lập trình hàng ngày.

Những người dẫn đầu cần thiết và chức năng của họ

< stdio.h> – Đầu vào và xuất

Đầu trang [FLT: 0] cung cấp chức năng đọc và viết cho luồng chuẩn (stdin, stder, stder) và tập tin. Không có nó, bạn cần thực hiện các cuộc gọi hệ thống cấp thấp hoặc viết lớp đệm riêng của bạn. Các chức năng khóa bao gồm:

  • ) ) [FLT:] – Định dạng đầu ra và nhập.
  • [FLT:] / ) – Mở và đóng tập tin.
  • [FLT:] / ) – Đọc/ ghi chuỗi từ tập tin an toàn.
  • ) / ) – Tập tin Biary I/O.
  • / ) – Định dạng tập tin I/O.

) Đọc một dòng từ người dùng mà không có bộ đệm tràn thì dễ dàng với :]:

#include <stdio.h>

int main() {
 char buffer[100];
 printf("Enter a line: ");
 if (fgets(buffer, sizeof(buffer), stdin)) {
 printf("You entered: %s", buffer);
 }
 return 0;
}

& lt; stdlib.h > – Chung Uliities

bao gồm các chức năng cho việc phân bổ trí nhớ động, thế hệ số ngẫu nhiên, tiến trình điều khiển và chuyển đổi. Những chức năng này cần thiết cho chương trình cần thiết để phân bổ bộ nhớ vào thời gian chạy hoặc thực hiện các thao tác hệ thống.

  • , ) ) [FLT: khả năng] , [FLT: 6) [FL: 17) [FL: 7] [FL: 7]] [FL:]]] [FL:]]] bộ nhớ động năng quản lý động thái:] [FL:] [FL: 7] [FL:] [FL:]]] [FLT]]] [FLT:]] [FL:]]] [ Bộ nhớ động năng quản lý động thái]
  • ) ) ) ) , [FLT:] ] – rid ring to-ra-tra-triless.
  • ) , ) – Pseudo-random location con số.
  • ) , ) – Bộ xử lý.
  • ) - Nhanh để thực hiện các mảng.
  • ) – Binary search on ched lines.

Sắp xếp một dãy số nguyên với đơn giản hơn viết thói quen sắp xếp của riêng mình:

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
 return (*(int*)a - *(int*)b);
}

int main() {
 int arr[] = {42, 3, 71, 1, 9};
 size_t n = sizeof(arr) / sizeof(arr[0]);
 qsort(arr, n, sizeof(int), compare);
 for (size_t i = 0; i < n; i++)
 printf("%d ", arr[i]);
 printf("\n");
 return 0;
}

< dây. h> – Lệnh chuỗi và bộ nhớ thao tác

Làm việc với chuỗi C (null- reended string of ký tự) là lỗi- prone không có thư viện chuẩn. cung cấp các chức năng an toàn và hiệu quả để sao chép, phân loại, so sánh, và tìm kiếm chuỗi, cũng như thao tác chặn bộ nhớ.

  • ) , ) – Chép chuỗi.
  • ) , ) – Concate string.
  • ) , ) – So sánh chuỗi licicographicly.
  • ) – Kéo dài chuỗi.
  • , ) – Tìm kiếm các chuỗi phụ hoặc ký tự.
  • , ) ) , – Thao tác trí nhớ.
  • – giảm một chuỗi (với sự chăm sóc cho tính dễ chịu).

) Phân loại một cách an toàn hai chuỗi bằng ]:

#include <stdio.h>
#include <string.h>

int main() {
 char dest[20] = "Hello, ";
 const char *src = "World!";
 strncat(dest, src, sizeof(dest) - strlen(dest) - 1);
 printf("%s\n", dest);
 return 0;
}

<amath.h> – Hàm Toán học

Đối với ứng dụng khoa học và kỹ thuật, cung cấp các chức năng nổi như , , , , , và .

  • – Square root.
  • ) ) , – Các chức năng lượng giác giác giác].
  • ) , ) – Expontal and natural Amecition.
  • – giá trị tuyệt đối cho con số nổi.
  • – Vòng tròn đến số nguyên gần nhất.

Tính toán khoảng cách giữa hai điểm:

#include <stdio.h>
#include <math.h>

int main() {
 double x1 = 1.0, y1 = 2.0, x2 = 4.0, y2 = 6.0;
 double dx = x2 - x1, dy = y2 - y1;
 double distance = sqrt(dx*dx + dy*dy);
 printf("Distance: %.2f\n", distance);
 return 0;
}

< kiểu. h> – Chữ ký chạy

Hàm trong phân loại và chuyển đổi ký tự: , , , . Họ xử lý các quy tắc đặc trưng địa phương và an toàn hơn so sánh sách hướng dẫn viết.

Đang chuyển chuỗi sang chữ hoa:

#include <stdio.h>
#include <ctype.h>

int main() {
 char str[] = "Hello, World!";
 for (int i = 0; str[i]; i++)
 str[i] = toupper(str[i]);
 printf("%s\n", str);
 return 0;
}

< time.h> – Ngày và Giờ

cung cấp các chức năng để có được thời gian hiện tại, đo thời gian và định dạng ngày/ giờ chuỗi. Có ích cho việc ghi nhật ký, phân tích và lên kế hoạch.

  • ) – Hãy lấy thời gian hiện tại.
  • ) – bộ xử lý thời gian sử dụng chương trình.
  • ) – khác biệt giữa hai giá trị thời gian.
  • ) – Định dạng thời gian dạng dạng dạng dạng dạng dạng dạng dạng dạng chuỗi.
  • / – Chuyển thời gian t t để vỡ vỡ irct tm.

In ngày và giờ hiện tại:

#include <stdio.h>
#include <time.h>

int main() {
 time_t t = time(NULL);
 struct tm *tm_info = localtime(&t);
 char buffer[26];
 strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);
 printf("Current time: %s\n", buffer);
 return 0;
}

Những gương thực tiễn cho thấy sức mạnh của thư viện tiêu chuẩn

Đọc một tập tin an toàn

Đọc một dòng văn bản theo dòng là một điều kiện phổ biến. Dùng để ngăn chặn việc đệm tràn ngập, và / xử lý điều kiện kết thúc tập tin và lỗi.

#include <stdio.h>
#include <stdlib.h>

int main() {
 FILE *fp = fopen("data.txt", "r");
 if (!fp) {
 perror("fopen");
 return EXIT_FAILURE;
 }
 char line[256];
 while (fgets(line, sizeof(line), fp)) {
 printf("%s", line);
 }
 if (ferror(fp))
 perror("fgets");
 fclose(fp);
 return 0;
}

Comment

Để tạo một chuỗi (mỗi chuỗi) cần thiết bộ nhớ sống động. Thư viện của , , và (nếu có) đơn giản hóa tiến trình. Ghi chú: [FLT: 82) không phải là một chức năng ISO C nhưng được hỗ trợ rộng rãi; bạn cũng có thể dùng ).

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
 char *words[] = {"apple", "banana", "cherry", "date"};
 size_t num_words = sizeof(words) / sizeof(words[0]);
 // Allocate array of char pointers
 char **copy = malloc(num_words * sizeof(char*));
 if (!copy) return EXIT_FAILURE;
 for (size_t i = 0; i < num_words; i++) {
 copy[i] = malloc(strlen(words[i]) + 1);
 if (copy[i])
 strcpy(copy[i], words[i]);
 }
 // Print and free
 for (size_t i = 0; i < num_words; i++) {
 printf("%s\n", copy[i]);
 free(copy[i]);
 }
 free(copy);
 return 0;
}

Lợi ích của việc dùng thư viện tiêu chuẩn C

  • Tính năng chân thực: Bộ mã được viết ngược lại với các trình biên dịch thư viện chuẩn và chạy trên nền tảng khớp (Clips, Linux, macOS, hệ thống nhúng).
  • Tính sửa đổi: Chức năng Thư viện được thử nghiệm chặt chẽ và xử lý các trường hợp cạnh (như vô giá trị, dây rỗng, và tràn) tốt hơn nhiều cách thực hiện bằng tay.
  • Dịch: Thực hiện thư viện chuẩn thường được tối ưu hóa cho phần cứng đích, sử dụng kỹ thuật như gạch, tra cứu các bảng và hướng dẫn phần cứng.
  • Sẵn sàng: sử dụng thay vì một bong bóng tùy chỉnh sắp xếp ngay lập tức giao tiếp với các nhà phát triển khác.
  • Khả năng phục hồi: Các mật mã tiến hóa với tiêu chuẩn. Nâng cấp trình biên dịch hay nền tảng có thể tự động cải thiện hiệu suất thư viện mà không cần chạm vào mã lệnh của bạn.

Những thực hành tốt nhất và cạm bẫy thông thường

Luôn luôn kiểm tra giá trị trả về

Hàm như , , và có thể thất bại. Bỏ qua giá trị của chúng sẽ dẫn đến sụp đổ hoặc hành vi không xác định. Ví dụ:

FILE *fp = fopen("nonexistent.txt", "r");
if (!fp) {
 perror("fopen");
 return EXIT_FAILURE;
}

Hàm đã ràng buộc ưa thích

Hàm như và nguy hiểm vì chúng không kiểm tra kích cỡ bộ đệm. Hãy dùng , , hoặc (nơi nào có) để ngăn chặn sự đệm tràn.

char buf[10];
snprintf(buf, sizeof(buf), "%s", "Hello, World!"); // safely truncated

Giải phóng trí nhớ được điều khiển bằng mọi năng động

Mỗi hoặc phải có một khớp. Hãy dùng công cụ như Valgrind hoặc addressSanitzer để phát hiện các rò rỉ bộ nhớ.

Biết tính dễ bị oán giận

Một số chức năng thư viện chuẩn (v. d., , [FLT: 101] sử dụng trạng thái tĩnh nội bộ và không an toàn chỉ. Trong các chương trình đọc đa thứ, thích phiên bản thay thế như [FLT: 102] hoặc [FLT: 10] nơi có sẵn.

Thêm tài nguyên

Để hiểu sâu hơn về Thư viện Tiêu chuẩn C, hãy tham khảo các tài liệu có thẩm quyền:

Kết luận

Thư viện C Standard là một công cụ cần thiết cho mỗi lập trình viên C. Bằng cách làm chủ được các đầu và chức năng của nó, bạn có thể viết ngắn hơn, an toàn hơn, và dễ xách tay hơn. thay vì tái tạo các thành phần cơ bản, bạn có thể tập trung vào các logic làm cho ứng dụng của bạn độc đáo. khi bạn tiếp tục phát triển ở C, làm cho thói quen đầu tiên kiểm tra xem thư viện thông thường có giải quyết vấn đề của bạn hay không, nó thường giải quyết vấn đề của bạn, và nó làm như vậy với hàng thập kỷ của sự khôn ngoan tập thể được kích thích trong việc điều đó.