Table of Contents

ภาพภาพรวมของห้องสมุดมาตรฐาน C

ไลบรารี C Standard เป็นชุดของฟังก์ชัน, ขนาดแมโคร และนิยามประเภท ที่ถูกจัดทําขึ้นเพื่อเป็นส่วนหนึ่งของมาตรฐานภาษาโปรแกรม ISO C ที่จะให้ผู้พัฒนาแบบพกพา, ได้ทดสอบพื้นฐานงานทั่วไปอย่างดี เช่น การใส่ข้อมูล/ output, การจัดการหน่วยความจํา alfect, การคํานวณ, และการจัดรูปแบบเวลา โดยอาศัยไลบรารีมาตรฐานการเขียนแทนการใส่แฟ้ม, คุณลดข้อผิดพลาด, ปรับลดความง่ายในการอ่าน, และมั่นใจได้ว่าโปรแกรมของคุณ จะประพฤติตัวตลอดตลอดตลอดตลอดทั้งในแพลตฟอร์มและเรียบเรียงแบบต่าง ๆ

ไลบรารีถูกจัดเป็นแฟ้มหัวจดหมายหลายแฟ้ม แต่ละกลุ่มจะมีส่วนร่วม การเข้าใจสิ่งที่แต่ละหัวเสนอเป็นขั้นตอนแรกในการเขียนรหัส C ที่มีประสิทธิภาพและรักษาได้

หัว เรื่อง สําคัญ และ การ งาน ของ พวก เขา

& lt; stio. h> – input และส่งออก

[FLT: 0] หัวจดหมายนี้ให้ฟังก์ชันสําหรับอ่านและเขียนไปยังลําธารมาตรฐาน (เช่น stdin, stdout, stder) และแฟ้มต่าง ๆ โดยไม่ต้องใช้หัวเรื่อง จะต้องใช้การทํางานของระบบที่ต่ํา หรือเขียนชั้นบัฟเฟอร์ของคุณเอง ซึ่งฟังก์ชันคีย์ของคุณรวม:

  • [FLT: 0]] /] – รูปแบบการแสดงผลรูปแบบและข้อมูลเข้า].
  • [FLT: 0]] / ] – เปิดและปิดไฟล์.
  • [FLT: 0]] / [FLT: ⁇ [FLT: 6] ] – อ่าน/เขียนข้อความจากแฟ้มอย่างปลอดภัย
  • [FLT: 0]][FLT: 7] / [[FLT: ⁇ [FLT: 8]] – Bigary file I/O.
  • [FLT: 0]][FLT: 9]] / ] - รูปแบบแฟ้ม I/O.

[FLT: 0]. เอ็กซ์เซมเปิล: อ่านบรรทัดจากผู้ใช้โดยไม่มีบัฟเฟอร์ไหลนั้นตรงไปตรงมา :

#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;
}

< sddlib.h> – ทั่วไปอรรถประโยชน์

[FLT: 13] รวมฟังก์ชั่นสําหรับหน่วยความจําแบบไม่ตายตัว การสุ่มตัวเลข การควบคุมกระบวนการ และการเปลี่ยนรูปแบบ สิ่งเหล่านี้จําเป็นสําหรับโปรแกรมที่ต้องการการจองหน่วยความจําในการทํางาน หรือดําเนินการระดับระบบ

  • [[FLT: 0]]]] [FLT: 15] [FLT: ⁇ ]] [FLTT: 4][FLTT: 16] [FLTT: 5] [FLTTT: 6] [FLTT: ⁇ [FTTTTT] [FTLTT] [LLLLLLLLLLLLLLLLLE] การจัดการความทรงจํา พ.ศ.
  • [FLT: 0]]] ] [FLTT:20] [FLTT: 20] [FLT: 5] [สายสายสาย] กรมขนส่งหมายเลข].
  • [FLT: 0]]] [FLT: 22]] – ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ é
  • [FLT: 0]]] ] – การควบคุมกระบวนการ (FLT:3].
  • [FLT: 0] – การผ่าตัดด่วนสําหรับอาร์เรย์
  • [FLT: 0]] – สืบค้นเมื่ออาร์เรย์ส

[FLT: 0]. Excample: การเรียงลําดับจํานวนเต็มแบบเรียงตาม [FLT: 27] มันง่ายกว่าการเขียนรูปแบบประจําวันของคุณเอง:

#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;
}

& lt; ข้อความ. h> – สตริงและปฏิบัติการหน่วยความจํา

ทํางานกับข้อความ C (Null- recriminate of language) เป็นรูปแบบผิดพลาดโดยไม่มีไลบรารีมาตรฐาน [FLT: 29] ให้ฟังก์ชันปลอดภัยและมีประสิทธิภาพสําหรับการคัดลอก, การจับคู่, การเปรียบเทียบ และการอ้างอิง และการอ้างอิง และการค้นหาต่าง ๆ รวมถึงการบล็อคหน่วยความจําด้วย

  • [FLT: 0]]]] ] – สตริงคัดลอก (พ.ศ.
  • [FLT: 0]]] ] ] ] สตริงรวม (PDF).
  • [FLT: 0]]] ]] – เทียบสายอนุสรณ์ศัพท์ (FLT:3].
  • [FLT: 0] – รับความยาวสตริง.
  • [FLT: 0]]]] ] – สืบค้นหาข้อความย่อยหรือตัวละคร พ.ศ.
  • [FLT: 0]]] [FLT: ⁇ ]] [FLTT: 4] [FLT: 5] – บล็อกความทรงจํา – บล็อกการดําเนินงาน (FLTLTLLT:5).
  • [FLT: 0] – สตริง (ดูแลเรื่องความต่อเนื่อง).

[FLT: 0]. เอ็กซ์เซมเปิล: การประสานสายสองสายอย่างปลอดภัยโดยใช้ ].

#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;
}

<mat.h> – ฟังก์ชัน Mathematical

สําหรับโปรแกรมทางวิทยาศาสตร์และวิศวกรรม (FLT:45) ให้ฟังก์ชันแบบลอยน้ําแบบ [FLT: 47]] ] ] (FLT:50] และ เครื่องจับเท็จและมีความแม่นยํามากขึ้น

  • [FLT: 0] – สแควร์ สแควร์ (ค.ศ.
  • [FLT: 0]]] ] ] [FLTT: 4][FLTT:55] [FLT: 5] [FLLT: 5]]] [FTTTTT: 5]]. กรมทหารไทย.
  • [FLT: 0]]] – เอ็กซ์โปเน็นเชียลแอนด์ฟลายเนชั่นแนล (FLLT:3).
  • [FLT: 0] – ค่าสัมบูรณ์สําหรับเลขจุดลอย (Float:58).
  • [FLT: 0] – รอบจํานวนเต็มที่ใกล้ที่สุด.

[FLT: 0]. เอ็กซ์เซมเปิล:[ คํานวณระยะห่างระหว่างจุดสองจุด:

#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;
}

& lt; ctype. h> – อักขระการจัดการ

ฟังก์ชันใน จัดแยกและแปลงตัวอักษร: ) ] ] พวกเขาจัดการกฏท้องถิ่นและปลอดภัยกว่าการเปรียบเทียบแบบเขียนคู่มือ (FLT:65).

[FLT: 0]. Example: แปลงข้อความเป็นอักษรตัวใหญ่:

#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;
}

& lt; เวลา. h> – วันที่และเวลา

[FLT: 67] จัดทําฟังก์ชันให้มีเวลาปัจจุบัน วัดเวลา และรูปแบบวันที่/เวลา มีประโยชน์สําหรับการทํา ไม้, การวิเคราะห์ และจัดลําดับ

  • [FLT: 0] – ได้เวลาปัจจุบัน
  • [FLT: 0]] – ประมวลผลเวลาที่ใช้โดยโปรแกรม.
  • [FLT: 0] – ความแตกต่างระหว่างค่าเวลา 2 ค่า
  • [FLT: 0] – ฟอร์แมตเวลาเป็นสตริง
  • [FLT: 0]]] / ]] – แปลงเวลาในการทําลายเวลาเพื่อวางตัว-วางโปรแกรม Trm.

[FLT: 0]. Example: พิมพ์วันที่และเวลาปัจจุบัน:

#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;
}

ตัว อย่าง ที่ ใช้ ได้ จริง ซึ่ง แสดง ถึง พลัง ของ ห้อง สมุด มาตรฐาน

การ อ่าน แฟ้ม อย่าง ปลอด ภัย

การอ่านบรรทัดข้อความตามบรรทัด เป็นเงื่อนไขทั่วไป ใช้ ป้องกันการไหลของบัฟเฟอร์ และ / จัดการปิดไฟล์และเงื่อนไขข้อผิดพลาด

#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;
}

การ กรีด เส้น เส้น เส้น เส้น เส้น เส้น หมุน

การปรับลําดับของสตริง (ทุกความยาวตัวแปร) ต้องการหน่วยความจําแบบไม่ตายตัว ไลบรารี [FLT: 79] [FLT: 80] และ[FLT: 801] [FLT: 81] (หากมี] จะลดความเร็วของโพรเซสได้ โปรดสังเกตว่า [FLT: 82] ไม่ใช่ฟังก์ชัน C แบบ ISO แต่ได้รับการสนับสนุนอย่างกว้างขวาง นอกจากนี้คุณยังสามารถใช้ [FLT: 83] [FLT: 884] ได้เช่นกัน

#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;
}

ประโยชน์ ของ การ ใช้ ห้อง สมุด มาตรฐาน C

  • [FLT: 0] โพสต์ทูเวอร์ชัน: รหัสเขียนขึ้นกับไลบรารีมาตรฐาน
  • [FLT: 0] ความไม่สะอาด: ฟังก์ชันห้องสมุดถูกทดสอบอย่างรัดกุมและจับพิมพ์แบบขอบ (เช่น แท่งชี้ว่าง, สายเปล่า, และสายล้น) ดีกว่าเครื่องมือพับหลายแบบ
  • [FLT: 0] Perporance: ห้องสมุดมาตรฐาน มักจะถูกปรับแต่งให้ใช้อุปกรณ์เป้าหมายได้ดีที่สุด โดยใช้เทคนิคเช่น การฝัง, การมองหาตาราง และคําแนะนําของฮาร์ดแวร์
  • [FLT: 0] ความสามารถที่อ่านได้: การใช้ แทนการเรียงลําดับฟองที่กําหนดเอง การสื่อสารทันทีถึงนักพัฒนาคนอื่น
  • [FLT: 0] ความต้านทาน: การพัฒนาระบบด้วยมาตรฐาน การอัพเกรดตัวรวบรวมหรือแพลตฟอร์มอาจปรับปรุงการทํางานของห้องสมุดได้โดยอัตโนมัติ โดยไม่ต้องแตะรหัสของคุณ

การ ฝึก อบรม ที่ ดี ที่ สุด และ การ ตก หลุม พราง ทั่ว ไป

ตรวจสอบค่าคืนเสมอ

การทําฟังก์ชันเช่น ] และ ล้มเหลวได้ การละเลยค่ากลับของพวกเขานําไปสู่พฤติกรรมที่ผิดพลาดหรือนิยามไม่ได้ ตัวอย่างเช่น:

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

ฟังก์ชันที่แยกไว้ล่วงหน้า

การทํางานเช่น ) และ เป็นอันตราย เนื่องจากพวกเขาไม่ตรวจสอบขนาดบัฟเฟอร์ ใช้ หรือ (ซึ่งมี] เพื่อป้องกันการไหลของบัฟเฟอร์

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

หน่วยความจําแบบอัตโนมัติทั้งหมดที่เหลือ

ทุก หรือ ต้องตรงกับ ใช้เครื่องมือเช่น Valgriind หรือที่อยู่ เพื่อตรวจสอบการรั่วไหลของหน่วยความจํา

จง สํานึก ถึง ความ สําคัญ ของ การ กลับ ใจ

ฟังก์ชันมาตรฐานของไลบรารี (เช่น [FLT: 100]], [FLT: 101] ใช้สถานะคงที่ภายในและไม่ปลอดภัยในโปรแกรมหลายแบบอ่านซ้ํากัน ชอบใช้รุ่นแบบเพิ่มเติม เช่น [FLT: 102] หรือ (FLT: 103] ที่ว่าง (FT: 103).

เพิ่มทรัพยากร

เพื่อ ให้ ความ เข้าใจ ลึก ซึ้ง ยิ่ง ขึ้น เกี่ยว กับ ห้อง สมุด มาตรฐาน C โปรด พิจารณา ข้อ อ้างอิง ที่ เป็น ไป ตาม หลัก พระ คัมภีร์:

  • [FLT: 0]. acpptite.com – C start load headers
  • [FLT: 0]. GNU C Bookary C February February
  • [FLT: 0] คู่มือของ POSIX โปรแกรม (ไม่รวม C ห้องสมุดมาตรฐาน)

รูปแบบการวน

C Standard ห้องสมุดนี้ยังเป็นเครื่องมือที่จําเป็นสําหรับโปรแกรมเมอร์ C ทุกตัว โดยคุณสามารถเขียนหัวจดหมายและการทํางานได้สั้นกว่านี้ และใช้งานได้โดยพกพาได้ดีกว่า แทนที่จะใช้ส่วนประกอบพื้นฐานที่สร้างขึ้นใหม่ คุณสามารถเน้นไปที่เหตุผลที่ทําให้โปรแกรมของคุณมีเอกลักษณ์มากขึ้นได้ เมื่อคุณพัฒนาโปรแกรมใน C อยู่เรื่อยๆ ทําเป็นนิสัยของการตรวจสอบว่าห้องสมุดมาตรฐานแก้ปัญหาของคุณได้จริงหรือไม่ -- มันมักแก้ไขได้ และทําได้ด้วยความรู้ที่รวมเป็นสิบๆ ปี