แก้ไขลวดลายจุดเชื่อมต่อStencils
วิธี ใช้ ห้อง สมุด มาตรฐาน C เพื่อ ปรับ ปรุง รหัส ของ คุณ ให้ เรียบ ง่าย
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 อยู่เรื่อยๆ ทําเป็นนิสัยของการตรวจสอบว่าห้องสมุดมาตรฐานแก้ปัญหาของคุณได้จริงหรือไม่ -- มันมักแก้ไขได้ และทําได้ด้วยความรู้ที่รวมเป็นสิบๆ ปี