fgets()
फ़ंक्शन fgets() का उपयोग न्यू लाइन कैरेक्टर तक स्ट्रिंग पढ़ने के लिए किया जाता है। यह ऐरे बाउंड चेक करता है और यह सुरक्षित भी है।
यहां C भाषा में fgets() का सिंटैक्स है:
char *fgets(char *string, int n, FILE *stream)
यहां,
string - यह char के ऐरे का पॉइंटर है।
n - पढ़े जाने वाले कैरेक्टर्स की संख्या।
stream - यह एक फ़ाइल ऑब्जेक्ट का पॉइंटर है।
यहां C भाषा में fgets() का एक उदाहरण है:
उदाहरण
#include <stdio.h>
#define FUNC 8
int main() {
char b[FUNC];
fgets(b, FUNC, stdin);
printf("स्ट्रिंग है: %s\n", b);
return 0;
}
आउटपुट
इनपुट स्ट्रिंग stdin स्ट्रीम में "Hello World!" है।
स्ट्रिंग है: Hello W
उपरोक्त प्रोग्राम में, char टाइप का एक ऐरे घोषित किया गया है। फ़ंक्शन fgets() STDIN स्ट्रीम से दिए गए नंबर तक कैरेक्टर्स पढ़ता है।
gets()
फ़ंक्शन gets() का उपयोग स्टैंडर्ड इनपुट डिवाइस से स्ट्रिंग पढ़ने के लिए किया जाता है। यह ऐरे बाउंड चेक नहीं करता और यह असुरक्षित भी है।
यहां C भाषा में gets() का सिंटैक्स है:
char *gets(char *string);
यहां,
string - यह char के ऐरे का पॉइंटर है।
यहां C भाषा में gets() का एक उदाहरण है:
उदाहरण
#include <stdio.h>
#include <string.h>
int main() {
char s[100];
int i;
printf("\nएक स्ट्रिंग दर्ज करें: ");
gets(s);
for (i = 0; s[i] != '\0'; i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 32;
}
}
printf("\nअपर केस में स्ट्रिंग = %s", s);
return 0;
}
आउटपुट
एक स्ट्रिंग दर्ज करें: hello world! अपर केस में स्ट्रिंग = HELLO WORLD!
उपरोक्त प्रोग्राम में, char ऐरे की स्ट्रिंग s को अपर केस स्ट्रिंग में बदल दिया जाता है। फ़ंक्शन gets() का उपयोग stdin स्ट्रीम से स्ट्रिंग पढ़ने के लिए किया जाता है।
महत्वपूर्ण चेतावनी
| विशेषता | fgets() | gets() |
|---|---|---|
| बाउंड चेकिंग | हां (सुरक्षित) | नहीं (असुरक्षित - बफर ओवरफ्लो संभव) |
| न्यूलाइन हैंडलिंग | न्यूलाइन शामिल करता है (यदि फिट होता है) | न्यूलाइन को डिस्कार्ड करता है |
| स्टैंडर्ड | C89, C99, C11 | C11 में हटाया गया (डिप्रिकेटेड) |
| रिटर्न ऑन EOF | NULL | NULL |
सिफारिश: कभी भी gets() का उपयोग न करें। हमेशा fgets() या C11 में gets_s() का उपयोग करें।