C Standard Library

C मानक पुस्तकालय ISO C प्रोग्रामिंग भाषा मानक के हिस्से के रूप में प्रदान किए गए कार्यों, मैक्रोज़ और प्रकार की परिभाषाओं का एक संग्रह है। यह डेवलपर्स को आम कार्यों जैसे इनपुट / आउटपुट, स्ट्रिंग हैंडलिंग, मेमोरी आवंटन, गणितीय गणना, और तारीख / समय हेरफेर के लिए एक पोर्टेबल, अच्छी तरह से परीक्षण किया गया आधार देता है। कस्टम समाधान लिखने के बजाय मानक पुस्तकालय पर भरोसा करके, आप बग को कम करते हैं, कोड पठनीयता में सुधार करते हैं, और यह सुनिश्चित करते हैं कि आपके कार्यक्रम विभिन्न प्लेटफार्मों और संकलनों में लगातार व्यवहार करते हैं।

पुस्तकालय कई हेडर फ़ाइलों में आयोजित किया जाता है, प्रत्येक समूह संबंधित कार्यक्षमता। यह समझना कि प्रत्येक हेडर क्या प्रदान करता है, वह कुशल और रखरखाव योग्य सी कोड लिखने का पहला कदम है। नीचे हम सबसे महत्वपूर्ण हेडर और उनके मुख्य कार्यों का पता लगाते हैं, साथ ही व्यावहारिक उदाहरणों के साथ जो दर्शाते हैं कि वे रोज़मर्रा की प्रोग्रामिंग को कैसे सरल बनाते हैं।

आवश्यक हैडर और उनके कार्य

To make a sss.h> to sss.

] हेडर मानक धाराओं (स्टैंडिन, स्टडाउट, स्टडरर) और फ़ाइलों को पढ़ने और लिखने के लिए कार्य प्रदान करता है। इसके बिना, आपको निम्न-स्तरीय सिस्टम कॉल को लागू करने या अपनी बफरिंग परत लिखने की आवश्यकता होगी। प्रमुख कार्यों में शामिल हैं:

  • ] / ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[FLT[FLT:[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[FLT:[[FLT:[FLT:[FLT:[FLT:[[[FLT:]]]]]]]]]]]]]]]]]]]]
  • ] ]] / ] ]] - ओपन और क्लोज़ फाइल।
  • ] ] / ] ] ]]] - सुरक्षित रूप से फ़ाइलों से स्ट्रिंग पढ़ें / लिखें।
  • ] ]] ]]]]]]]]]]]]] ]] ]]]]]]]]]] ]]]] ]]]] ]]]]]]] [[FLT:]]]]]]]]]]]]]]]]]]]] [[[[FLT:[FLT:[FLT:[[[[FLT:[FLT:[FLT:[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
  • ] / ]]]] - प्रारूपित फ़ाइल I/O.

Example: बफर अतिप्रवाह के बिना उपयोगकर्ता से एक पंक्ति पढ़ना के साथ सीधा है:

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

To make a ssdlib.h> to be a snub.h> to be snub.h> to be snb.

] में गतिशील स्मृति आवंटन, यादृच्छिक संख्या पीढ़ी, प्रक्रिया नियंत्रण और रूपांतरण के लिए कार्य शामिल हैं। ये उन कार्यक्रमों के लिए आवश्यक हैं जिन्हें रनटाइम पर स्मृति आवंटित करने या सिस्टम-लेवल ऑपरेशन करने की आवश्यकता होती है।

  • ] ]] ] ] ]] ]] ]] ]] - गतिशील स्मृति प्रबंधन।
  • ] ]]], ]]]]]]]]]]]]]]]]]]]]]]]]]][FLT-टू-नंबर रूपांतरण।
  • ] ]]]]]]]]] - Pseudo-random संख्या पीढ़ी.
  • ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT[]]]]]]]]]]]]]]]]][[[FLT[[[FLT:[FLT:[[FLT:[[[[FLT:[FLT:[FLT:[[FLT:[FLT:[FLT:[FLT:[[]]]]]]]]]]]]]]]]]]]]]
  • ]]]]]]]]]]]]]] - सरणी के लिए त्वरित कार्यान्वयन।
  • ]]]]]]]]]]]]]]]]]]]]]][[FLT:]]]]][FLT:]]]]]]]]][[[[[[[[FLT:[[[FLT:[FLT:[[[[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[[[[

Example: ] के साथ पूर्णांकों की एक सरणी को छंटनी अपने स्वयं के प्रकार की दिनचर्या लिखने की तुलना में कहीं अधिक सरल है:

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

To make a sing.h> - स्ट्रिंग और मेमोरी ऑपरेशन

C स्ट्रिंग्स (Pars of Nell-terminated arrays of a valentice) के साथ काम करना मानक पुस्तकालय के बिना त्रुटि-प्रवण है। [[FLT: 29] प्रतिलिपि बनाने, concatenating, तुलना करने और स्ट्रिंग्स की खोज करने के लिए सुरक्षित और कुशल कार्य प्रदान करता है, साथ ही साथ स्मृति ब्लॉक संचालन।

  • ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[FLT:[FLT:[[[FLT:[[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[
  • ] ]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]][FLT:]]]]]]]]]]]]]]]]]]][FLT[FLT[FLT:[FLT:[[FLT:[[[FLT:[FLT:[FLT:[[FLT:[FLT:[FLT:[FLT:[]]]]]]]]]]]]]]]]]]]]]]
  • ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[FLT[[[[FLT:FLT:FLT:[FLT:[[[[[FLT:[FLT:[FLT:[FLT:[[[FLT:[[[[FLT:
  • ]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:FLT:03]]]][FLT:]]]]]]]][[FLT:[FLT:[[FLT:[]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[FLT:[FLT:FLT:[FLT:[FLT:[FLT:[[FLT:[FLT:[FLT:]]]]]]]]]]]]]]]]]
  • ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[FLT:[[FLT:[[[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[FLT[FLT:[FLT:[FLT:[[[[FLT:[FLT:[FLT:[[[[[FLT:[[[[FLT:[
  • ] ]]] ] ] ]] ]]]]]]]] - मेमोरी ब्लॉक ऑपरेशन।
  • ] ]]]] ]] ] ] ] ]] ]] ]]]] ]]] ]] ]] ]] [[FLT:]]]]]]]]]]]]] [[[[[[[[[[[[FLT:[[[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [[

Example: सुरक्षित रूप से दो स्ट्रिंगों को का उपयोग करके concatenate:

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

To make a new way.

वैज्ञानिक और इंजीनियरिंग अनुप्रयोगों के लिए, ]], ], ], ]], ]]], और ]]]]]]. ये हार्डवेयर-अनुकूलित और नैव कार्यान्वयन की तुलना में अधिक सटीक हैं।

  • ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:FLT:FLT:2]]]]]]]]][FLT:FLT:FLT[[[[FLT:FLT:]]]]]]]]]]]]]]]]]][FLT:FLT:FLT:FLT:[FLT:[[[FLT:]]]]]]]]]]]]]]]]]]]]
  • ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:]]]]]]]]]]]]][FLT:[FLT:[FLT:[FLT:[FLT:[FLT:[FLT:[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
  • ] ] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:[FLT:]]]]]]]]]]]]]]]]][[[FLT:[FLT:[[FLT:[FLT:[FLT:[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
  • ] ]]]]] ]] ]] ] ] ] - फ्लोटिंग पॉइंट नंबर के लिए बिल्कुल सही मूल्य।
  • ]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:[FLT:[[]]]]]]]]]]]]]]]]]][[[[[FLT:[[[[FLT:[[[[FLT:FLT:FLT:[FLT:[FLT:[[[FLT:[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

Example: दो बिंदुओं के बीच की दूरी की गणना:

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

To make a form of a form of a form of a form of a form of a form of a form.

]] में कार्य वर्णों को वर्गीकृत और परिवर्तित करें: , , ], . वे स्थानीय नियमों को संभालते हैं और मैनुअल तुलना लिखने की तुलना में सुरक्षित हैं।

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

To make a time.h> - तारीख और समय

वर्तमान समय प्राप्त करने के लिए कार्य प्रदान करता है, समय को कम करता है, और दिनांक / समय स्ट्रिंग्स को प्रारूपित करता है। लॉगिंग, प्रोफाइलिंग और शेड्यूलिंग के लिए उपयोगी है।

  • ]]]]] ]] ] ]] ] ] ] - वर्तमान कैलेंडर समय प्राप्त करें।
  • ]]]]]]]]]][]]]]]]]]]]]]][FLT:]][FLT:]]]]]][FLT:[[[[[FLT:[]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[FLT:FLT:[FLT:[[[FLT:FLT:[[FLT:[[[[[[[FLT:[FLT:[FLT:[[[[[[[[[[[[[[FLT:
  • ]]]]]]]]]]]]] - दो समय मूल्यों के बीच अंतर।
  • ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:[[FLT:[[[[[[]]]]]]]]]]]]]]]]]]]]]]][[[[[FLT:FLT:FLT:[[[FLT:[FLT:[FLT:[FLT:[[[[FLT:[FLT:[FLT:[[[[[[[[[[[[[FLT:
  • ] ] / ] ] ]]] - समय t को तोड़ने के लिए नीचे दिए गए निर्देश tm में परिवर्तित करें।

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

स्ट्रिंग्स की गतिशील सरणी

स्ट्रिंग्स की एक सरणी आवंटित करना (प्रत्येक परिवर्तनीय लंबाई) को गतिशील मेमोरी की आवश्यकता होती है। पुस्तकालय का , , और (यदि उपलब्ध हो) प्रक्रिया को सरल बनाना। नोट: एक ISO C फ़ंक्शन नहीं है लेकिन व्यापक रूप से समर्थित है; आप भी ] + ]] का उपयोग कर सकते हैं।

#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 Standard Library

  • Portability: कोड मानक पुस्तकालय compiles के खिलाफ लिखा गया है और किसी भी अनुरूप मंच (विंडोज, लिनक्स, मैकओएस, एम्बेडेड सिस्टम) पर चलता है।
  • Correctness: पुस्तकालय कार्यों का कड़ाई से परीक्षण किया जाता है और कई हाथ से शुरू किए गए कार्यान्वयन से बेहतर बढ़त के मामलों (जैसे null सूचक, खाली तार, और अतिप्रवाह) को संभाला जाता है।
  • Performance: मानक पुस्तकालय कार्यान्वयन अक्सर लक्ष्य हार्डवेयर के लिए अनुकूलित किया जाता है, जिसमें इनलाइनिंग, लुकअप टेबल और हार्डवेयर निर्देश जैसी तकनीकों का उपयोग किया जाता है।
  • Readability: का उपयोग ] बजाय एक कस्टम बबल सॉर्ट तुरंत अन्य डेवलपर्स के इरादे से संवाद करता है।
  • ]Maintainability: पुस्तकालयों मानक के साथ विकसित किया गया। एक कम्पाइलर या मंच को अपग्रेड करने से स्वचालित रूप से आपके कोड को छूए बिना पुस्तकालय कार्य प्रदर्शन में सुधार हो सकता है।

सर्वश्रेष्ठ अभ्यास और आम पिटफॉल

हमेशा रिटर्न वैल्यू की जांच करें

], ], और ] जैसे कार्य विफल हो सकते हैं। अपने रिटर्न मूल्यों को पहचानने से दुर्घटनाग्रस्त या अपरिभाषित व्यवहार होता है। उदाहरण के लिए:

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

सभी गतिशील रूप से आवंटित मेमोरी

हर ] या ] में एक मेलिंग होना चाहिए। स्मृति लीक का पता लगाने के लिए Valgrind या AddressSanitizer जैसे उपकरणों का उपयोग करें।

Reentrancy

कुछ मानक पुस्तकालय कार्य (जैसे, , ) आंतरिक स्थैतिक अवस्था का उपयोग करते हैं और थ्रेड-सुरक्षित नहीं होते हैं। बहु-थ्रेडेडेड प्रोग्रामों में, ] या ] जैसे पुनर्वित्त संस्करणों को पसंद करते हैं जहां उपलब्ध हैं।

आगे के संसाधन

C Standard Library की अपनी समझ को गहरा करने के लिए, आधिकारिक संदर्भों से परामर्श करें:

निष्कर्ष

C Standard Library प्रत्येक C प्रोग्रामर के लिए एक अनिवार्य उपकरण है। अपने हेडर और कार्यों को महारत हासिल करके आप लघु, सुरक्षित और अधिक पोर्टेबल कोड लिख सकते हैं। बुनियादी घटकों को फिर से शुरू करने के बजाय, आप उन तर्क पर ध्यान केंद्रित कर सकते हैं जो आपके अनुप्रयोग को अद्वितीय बनाती हैं। जैसा कि आप C में विकसित होना जारी रखते हैं, पहले जांच करने की आदत बनाते हैं कि मानक पुस्तकालय पहले से ही आपकी समस्या को हल करता है- यह आमतौर पर करता है, और यह दशकों के सामूहिक ज्ञान से बेक्ड है।