पॉइंटर और फ़ाइल संचलन

                        पॉइंटर और फ़ाइल संचलन


पॉइंटर और फ़ाइल संचलन - एक सरल मार्गदर्शिका

कभी आपने सोचा है कि कंप्यूटर कैसे याद रखता है कि कौन सा डेटा कहाँ रखा है? या फिर जब आप कोई फाइल सेव करते हैं तो वह वास्तव में कैसे काम करता है? अगर नहीं, तो आज हम इसी की बात करेंगे—पॉइंटर और फाइल संचलन की। कंप्यूटर प्रोग्रामिंग की दुनिया में ये दो चीजें नींव की तरह होती हैं। चाहे आप C, C++, या Python जैसे किसी भी लैंग्वेज में प्रोग्रामिंग कर रहे हों, पॉइंटर और फाइल संचलन की समझ आपके लिए गेमचेंजर साबित हो सकती है।

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

परिचय - कंप्यूटर विज्ञान में पॉइंटर और फ़ाइल संचलन का महत्व

रोज़मर्रा की प्रोग्रामिंग में इनकी उपयोगिता

आज के डिजिटल युग में हर दिन हम किसी न किसी सॉफ्टवेयर के संपर्क में आते हैं—चाहे वह मोबाइल ऐप हो या वेब ब्राउज़र। हर सॉफ्टवेयर के पीछे एक सिस्टम होता है जो मेमोरी को प्रबंधित करता है और फाइल्स को संभालता है। यहाँ पॉइंटर और फाइल संचलन दोनों ही अहम भूमिका निभाते हैं।

पॉइंटर की मदद से आप डायरेक्ट मेमोरी को एक्सेस कर सकते हैं, जिससे प्रोग्राम अधिक तेज और कुशल बनता है। वहीं, फाइल संचलन आपको पर्मानेंट डेटा स्टोरेज की सुविधा देता है—यानि आप जो भी डेटा सेव करते हैं, वह सिस्टम को बंद करने के बाद भी सुरक्षित रहता है।

क्यों यह टॉपिक छात्रों के लिए अहम है?

अगर आप कंप्यूटर साइंस के छात्र हैं, तो पॉइंटर और फाइल संचलन आपकी सिलेबस का जरूरी हिस्सा हैं। इनके बिना प्रोग्रामिंग अधूरी मानी जाती है। ये विषय न केवल थ्योरी में आते हैं, बल्कि ज्यादातर प्रैक्टिकल एग्ज़ाम और इंटरव्यूज़ में भी इनसे जुड़े सवाल पूछे जाते हैं।

इसलिए, अगर आप इन दोनों विषयों की गहराई से समझ बना लेते हैं, तो आप न केवल अच्छे अंक ला सकते हैं, बल्कि एक अच्छे प्रोग्रामर भी बन सकते हैं।

पॉइंटर क्या होता है?

पॉइंटर की परिभाषा और कार्यविधि

पॉइंटर एक ऐसा वेरिएबल होता है जो किसी अन्य वेरिएबल के एड्रेस को स्टोर करता है। उदाहरण के लिए, अगर आपके पास एक वेरिएबल int x = 10; है, तो एक पॉइंटर int *ptr = &x; उस x के एड्रेस को स्टोर कर सकता है। अब आप *ptr से x की वैल्यू को एक्सेस या बदल भी सकते हैं।

इसकी खास बात यह है कि पॉइंटर डायरेक्ट मेमोरी के साथ इंटरैक्ट करता है। यानि आप अपने प्रोग्राम की परफॉर्मेंस और मेमोरी मैनेजमेंट पर ज़्यादा कंट्रोल पा सकते हैं।

मेमोरी में पॉइंटर का स्थान और उपयोग

हर वेरिएबल को मेमोरी में एक यूनिक एड्रेस दिया जाता है। पॉइंटर उस एड्रेस को जानकर, वहाँ रखी जानकारी को एक्सेस करता है। जैसे एक डाकिया किसी एड्रेस पर चिट्ठी पहुंचाता है, वैसे ही पॉइंटर उस एड्रेस से डेटा पढ़ता है या वहाँ नया डेटा लिखता है।

यह खासतौर पर तब उपयोगी होता है जब हम बड़े डेटा स्ट्रक्चर (जैसे एरे, स्ट्रक्चर आदि) के साथ काम कर रहे हों, क्योंकि पॉइंटर की मदद से हम बिना बार-बार कॉपी किए डेटा को पास कर सकते हैं।

सी भाषा में पॉइंटर की घोषणा और उपयोग

सी लैंग्वेज में पॉइंटर की घोषणा इस प्रकार की जाती है:

c
int *ptr; // यह एक integer टाइप का पॉइंटर है ptr = &x; // 'x' वेरिएबल का एड्रेस ptr में स्टोर हो गया

अब *ptr लिखकर आप उस एड्रेस की वैल्यू पा सकते हैं या उसमें बदलाव कर सकते हैं। जैसे:

c
*ptr = 20; // अब x की वैल्यू 20 हो जाएगी

यह एक बेहद शक्तिशाली कॉन्सेप्ट है, लेकिन इसके साथ सतर्कता भी ज़रूरी है, क्योंकि एक गलत पॉइंटर पूरे प्रोग्राम को क्रैश कर सकता है।

पॉइंटर के प्रकार

नल पॉइंटर (Null Pointer)

नल पॉइंटर वह पॉइंटर होता है जिसका वैल्यू NULL होती है, यानी वह किसी भी वैध मेमोरी को पॉइंट नहीं करता। इसे प्रोग्रामिंग में एक सुरक्षा उपाय की तरह इस्तेमाल किया जाता है। जब तक आप किसी पॉइंटर को किसी वैध एड्रेस से न जोड़ें, तब तक उसे NULL कर देना सुरक्षित होता है।

c
int *ptr = NULL;

इससे प्रोग्राम को यह संकेत मिलता है कि यह पॉइंटर फिलहाल किसी वैध डेटा को नहीं दिखा रहा।

वाइल्ड पॉइंटर (Wild Pointer)

वाइल्ड पॉइंटर वो होता है जिसे डिक्लेयर तो कर दिया गया है लेकिन इनिशियलाइज़ नहीं किया गया। इससे यह किसी भी अनजान मेमोरी को पॉइंट कर सकता है, जो प्रोग्राम के लिए खतरनाक साबित होता है।

c
int *ptr; // वाइल्ड पॉइंटर *ptr = 100; // अनजाने एड्रेस पर लिखने की कोशिश

इससे Segmentation Fault जैसे एरर आ सकते हैं।

फंक्शन पॉइंटर (Function Pointer)

यह पॉइंटर एक फंक्शन के एड्रेस को स्टोर करता है। इसका उपयोग डायनामिक फंक्शन कॉल्स या Callback mechanism में किया जाता है।

c
void myFunction() { printf("Hello!"); } void (*funcPtr)() = myFunction; funcPtr(); // Hello!

डैंग्लिंग पॉइंटर (Dangling Pointer)

यह वह पॉइंटर होता है जो किसी वैध मेमोरी को पहले पॉइंट करता था, लेकिन अब वह मेमोरी फ्री हो चुकी है।

c
int *ptr = (int*)malloc(sizeof(int)); free(ptr); // मेमोरी फ्री हो गई *ptr = 5; // डैंग्लिंग पॉइंटर - खतरा!

ऐसे पॉइंटर को NULL करके खतरे से बचा जा सकता है।

पॉइंटर से जुड़े सामान्य मुद्दे और उनसे निपटना

Segmentation Fault क्या है?

Segmentation Fault एक प्रकार की रनटाइम एरर है जो तब आती है जब कोई प्रोग्राम अनाधिकृत मेमोरी तक पहुंचने की कोशिश करता है। अक्सर यह पॉइंटर से जुड़ी गलतियों की वजह से होता है।

Memory Leak को कैसे रोकें?

जब आप किसी पॉइंटर के ज़रिए मेमोरी अलॉट करते हैं (जैसे malloc), और उसे फ्री नहीं करते, तो वह मेमोरी लीक कहलाती है। हमेशा अलॉट की गई मेमोरी को प्रोग्राम के अंत में फ्री करें।

c
int *ptr = (int*)malloc(10 * sizeof(int)); // उपयोग के बाद free(ptr);

Debugging में सावधानियां

  • हमेशा पॉइंटर को इनिशियलाइज़ करें।

  • NULL चेक ज़रूर करें।

  • Dynamic memory को हमेशा फ्री करें।

फ़ाइल संचलन क्या है?

फ़ाइल संचलन की मूल अवधारणा

किसी भी सॉफ़्टवेयर एप्लिकेशन में डेटा को स्थायी रूप से स्टोर करने की ज़रूरत होती है, और यहीं पर फ़ाइल संचलन (File Handling) आता है। जब आप कोई डॉक्युमेंट सेव करते हैं, या कोई डेटा बेस में जानकारी लिखते हैं, तो उसके पीछे फाइल संचलन की प्रक्रिया होती है। फाइल संचलन एक तरीका है जिससे हम प्रोग्राम के ज़रिए फाइलों को खोल सकते हैं, पढ़ सकते हैं, लिख सकते हैं, और बंद कर सकते हैं।

सी भाषा में फाइल संचलन के लिए FILE नामक एक विशेष डेटा टाइप होता है, जिसे stdio.h हेडर फाइल में परिभाषित किया गया है। यह फाइल को रेप्रिजेंट करता है और उसके ज़रिए आप फाइल पर सारे ऑपरेशन कर सकते हैं।

इनपुट/आउटपुट स्ट्रीम का परिचय

C भाषा में तीन मुख्य स्ट्रीम होती हैं:

  1. stdin – स्टैंडर्ड इनपुट (जैसे कीबोर्ड)

  2. stdout – स्टैंडर्ड आउटपुट (जैसे स्क्रीन)

  3. stderr – स्टैंडर्ड एरर आउटपुट

जब आप किसी फाइल के साथ काम करते हैं, तो आप एक स्ट्रीम बनाते हैं जो उस फाइल से जुड़ जाती है। इसके बाद आप उस स्ट्रीम पर इनपुट या आउटपुट के ऑपरेशन कर सकते हैं।

सी भाषा में फ़ाइल हैंडलिंग की विधियाँ

फाइल संचलन से जुड़ी मुख्य फंक्शन्स निम्नलिखित हैं:

फ़ंक्शनकार्य
fopen()फाइल को खोलता है
fclose()फाइल को बंद करता है
fread()बाइनरी फाइल से डेटा पढ़ता है
fwrite()बाइनरी फाइल में डेटा लिखता है
fprintf()टेक्स्ट फाइल में फॉर्मेटेड डेटा लिखता है
fscanf()टेक्स्ट फाइल से फॉर्मेटेड डेटा पढ़ता है

उदाहरण:

c
FILE *fp; fp = fopen("data.txt", "w"); fprintf(fp, "Hello File!"); fclose(fp);

इस कोड में data.txt नाम की फाइल बनती है और उसमें "Hello File!" लिखा जाता है।

फाइल खोलना और बंद करना: fopen और fclose का उपयोग

fopen() फंक्शन का उपयोग

जब भी आप फाइल के साथ कोई ऑपरेशन करना चाहते हैं, सबसे पहले उसे खोलना ज़रूरी होता है। fopen() फंक्शन इसके लिए उपयोग होता है। इसका सिंटैक्स कुछ इस प्रकार है:

c
FILE *fp; fp = fopen("filename.txt", "mode");

यहाँ "mode" यह बताता है कि आप फाइल को पढ़ने के लिए खोल रहे हैं, लिखने के लिए, या जोड़ने (append) के लिए।

मोडकार्य
"r"केवल पढ़ने के लिए
"w"केवल लिखने के लिए
"a"फाइल के अंत में जोड़ने के लिए
"r+"पढ़ने और लिखने दोनों के लिए
"w+"नई फाइल बनाकर पढ़ने-लिखने के लिए

fclose() फंक्शन का उपयोग

जब फाइल पर ऑपरेशन समाप्त हो जाता है, तो उसे बंद करना आवश्यक होता है ताकि सिस्टम संसाधन मुक्त हो सकें। fclose() का सिंटैक्स:

c
fclose(fp);

यह सुनिश्चित करता है कि डेटा सही तरीके से फाइल में सेव हो जाए और मेमोरी लीकेज न हो।

फाइल में डेटा लिखना: fprintf और fputs का उपयोग

fprintf() के साथ फॉर्मेटेड आउटपुट

अगर आप टेक्स्ट फाइल में किसी डेटा को फॉर्मेटेड तरीके से लिखना चाहते हैं, तो fprintf() सबसे अच्छा विकल्प है। यह printf() जैसा ही है लेकिन आउटपुट स्क्रीन की बजाय फाइल में जाता है।

उदाहरण:

c
FILE *fp = fopen("score.txt", "w"); int score = 95; fprintf(fp, "Student score: %d\n", score); fclose(fp);

fputs() के साथ स्ट्रिंग लिखना

अगर आपको केवल एक साधारण स्ट्रिंग लिखनी है, तो fputs() काफी तेज़ और सरल तरीका है:

c
FILE *fp = fopen("note.txt", "w"); fputs("यह एक साधारण वाक्य है।", fp); fclose(fp);

fputs() सिर्फ स्ट्रिंग्स को हैंडल करता है, और इसमें फॉर्मेटिंग की सुविधा नहीं होती।

फाइल से डेटा पढ़ना: fscanf और fgets का उपयोग

fscanf() से फॉर्मेटेड डेटा पढ़ना

fscanf() scanf() जैसा ही है, परंतु यह डेटा स्क्रीन की बजाय फाइल से पढ़ता है। यह विशेषकर तब उपयोगी होता है जब आपको किसी संरचित डेटा को फाइल से पढ़ना हो।

उदाहरण:

c
FILE *fp = fopen("info.txt", "r"); char name[50]; int age; fscanf(fp, "%s %d", name, &age); fclose(fp);

fgets() के साथ लाइन-बाय-लाइन पढ़ना

अगर आपको एक-एक लाइन पढ़नी है, तो fgets() ज़्यादा उपयुक्त है:

c
char line[100]; FILE *fp = fopen("story.txt", "r"); while (fgets(line, sizeof(line), fp)) { printf("%s", line); } fclose(fp);

यह विधि लंबे टेक्स्ट या पैराग्राफ पढ़ने में सहायक होती है।

बाइनरी फाइल संचलन: fread और fwrite का परिचय

बाइनरी डेटा को पढ़ना और लिखना

जब हमें टेक्स्ट के बजाय बाइनरी फॉर्मेट में डेटा संभालना होता है (जैसे image, audio, या object data), तब हम fread() और fwrite() का प्रयोग करते हैं।

c
FILE *fp = fopen("data.bin", "wb"); int arr[5] = {1, 2, 3, 4, 5}; fwrite(arr, sizeof(int), 5, fp); fclose(fp);

यह कोड एक बाइनरी फाइल में integer array को सेव करता है।

fread() के साथ बाइनरी फाइल से पढ़ना

c
FILE *fp = fopen("data.bin", "rb"); int arr[5]; fread(arr, sizeof(int), 5, fp); fclose(fp);

यह कोड उसी डेटा को वापस memory में लाता है।

फाइल संचलन में त्रुटि प्रबंधन

फाइल ओपन करने में विफलता को पहचानना

कई बार ऐसा होता है कि फाइल खोलने की कोशिश करते समय वह फाइल मौजूद नहीं होती, या फाइल पर राइट परमिशन नहीं होती। ऐसे में fopen() फंक्शन NULL रिटर्न करता है। इससे प्रोग्राम क्रैश न हो, इसके लिए त्रुटि जाँच ज़रूरी होती है:

c
FILE *fp = fopen("myfile.txt", "r"); if (fp == NULL) { printf("फाइल खोलने में त्रुटि हुई।"); exit(1);

फाइल बंद करते समय त्रुटियाँ

यदि फाइल को ठीक से बंद नहीं किया गया तो डेटा सही से सेव नहीं होता। fclose() का रिटर्न वैल्यू यह बताता है कि फाइल सही तरीके से बंद हुई या नहीं। उदाहरण:

c
if (fclose(fp) != 0) { printf("फाइल बंद करने में त्रुटि हुई।"); }

सुरक्षा सुझाव

  • हमेशा NULL चेक करें।

  • फाइल नाम और पथ सत्यापित करें।

  • फाइल मोड को समझें, गलत मोड डेटा हानि का कारण बन सकता है।

फाइल की स्थिति और नेविगेशन: fseek, ftell और rewind

fseek() – कर्सर को स्थानांतरित करना

fseek() का उपयोग फाइल में किसी खास स्थान पर जाने के लिए किया जाता है। इसका सिंटैक्स:

c
fseek(fp, offset, origin);

जहाँ origin निम्न में से एक हो सकता है:

  • SEEK_SET – फाइल की शुरुआत से

  • SEEK_CUR – वर्तमान स्थान से

  • SEEK_END – फाइल के अंत से

उदाहरण:

c
fseek(fp, 0, SEEK_END); // फाइल के अंत में जाएँ

ftell() – वर्तमान स्थिति जानना

यह बताता है कि फाइल कर्सर किस पोजीशन पर है:

c
long pos = ftell(fp);

यह विशेष रूप से उपयोगी होता है जब आपको फाइल में रीड/राइट के स्थान को ट्रैक करना हो।

rewind() – फाइल की शुरुआत पर लौटना

यह फाइल पॉइंटर को फाइल की शुरुआत में ले जाता है:

c
rewind(fp);

यह fseek(fp, 0, SEEK_SET) का आसान विकल्प है।

पॉइंटर और फाइल संचलन का समन्वय

पॉइंटर से फाइल का डेटा संसाधित करना

कभी-कभी हम फाइल से डेटा पढ़कर डायनामिक मेमोरी में स्टोर करते हैं, और फिर उस डेटा पर ऑपरेशन करते हैं। उदाहरण:

c
FILE *fp = fopen("data.txt", "r"); char *buffer = (char *)malloc(100); fgets(buffer, 100, fp); printf("Data: %s", buffer); free(buffer); fclose(fp);

यहाँ पॉइंटर और फाइल दोनों का संयुक्त उपयोग हुआ।

Struct और फाइल संचलन का उपयोग

यदि आपके पास एक struct है और आप इसे फाइल में स्टोर करना चाहते हैं:

c
struct student { int id; char name[20]; }; struct student s1 = {101, "Ravi"}; fwrite(&s1, sizeof(s1), 1, fp);

इस तरह से स्ट्रक्चर को बाइनरी फाइल में सेव किया जा सकता है।

उन्नत फाइल संचालन तकनीकें

फाइल लॉकिंग

कई बार एक ही फाइल को एक से ज़्यादा प्रोग्राम्स द्वारा एक्सेस किया जाता है। इससे डेटा करप्शन हो सकता है। Unix/Linux में flock() या Windows में LockFile() जैसे API फाइल लॉकिंग के लिए उपयोग होते हैं।

फाइल बफरिंग

C में फाइल इनपुट/आउटपुट बफर के माध्यम से होते हैं। आप setbuf() या setvbuf() फंक्शन से बफर को नियंत्रित कर सकते हैं। यह फाइल I/O की परफॉर्मेंस बढ़ा सकता है।

Temporarily फाइल का उपयोग

tmpfile() फंक्शन का उपयोग कर आप अस्थायी फाइल बना सकते हैं जो प्रोग्राम के खत्म होते ही डिलीट हो जाती है:

c
FILE *tmp = tmpfile();

प्रैक्टिकल उदाहरण: एक मिनी प्रोजेक्ट

एक छोटा प्रोजेक्ट: स्टूडेंट रिकॉर्ड सिस्टम

मान लीजिए हमें एक स्टूडेंट रिकॉर्ड मैनेजर बनाना है जो डेटा सेव और पढ़ सके।

फ़ंक्शनलिटी:

  • स्टूडेंट का नाम, रोल नंबर और मार्क्स फाइल में सेव करें

  • सभी स्टूडेंट्स को लिस्ट करें

c
struct Student { char name[30]; int roll; float marks; }; void saveStudent(struct Student s) { FILE *fp = fopen("students.dat", "ab"); fwrite(&s, sizeof(s), 1, fp); fclose(fp); } void listStudents() { struct Student s; FILE *fp = fopen("students.dat", "rb"); while (fread(&s, sizeof(s), 1, fp)) { printf("Name: %s, Roll: %d, Marks: %.2f\n", s.name, s.roll, s.marks); } fclose(fp); }

यह कोड सी भाषा में पॉइंटर और फाइल संचलन दोनों की समझ को मज़बूत करता है।

पॉइंटर और फाइल संचलन में आम गलतियाँ और उनके समाधान

पॉइंटर से जुड़ी आम गलतियाँ

  1. Uninitialized Pointer:

    • यदि आप पॉइंटर को उपयोग करने से पहले इनिशियलाइज़ नहीं करते, तो यह वाइल्ड पॉइंटर बन जाता है।

    • सही तरीका: हमेशा पॉइंटर को NULL से इनिशियलाइज़ करें या किसी वैध एड्रेस से जोड़ें।

  2. Dangling Pointer:

    • जब किसी मेमोरी को फ्री करने के बाद भी आप उससे पॉइंटर को एक्सेस करते हैं।

    • सही तरीका: free() के बाद पॉइंटर को NULL करें।

  3. Memory Leak:

    • अलॉट की गई मेमोरी को रिलीज़ न करना।

    • सही तरीका: हर malloc() के साथ free() ज़रूर करें।

फाइल संचलन से जुड़ी आम गलतियाँ

  1. फ़ाइल बंद न करना:

    • यह डेटा हानि का कारण बन सकता है।

    • सही तरीका: हर fopen() के बाद fclose() ज़रूर करें।

  2. गलत मोड से फाइल खोलना:

    • इससे रीड/राइट ऑपरेशन विफल हो सकते हैं।

    • सही तरीका: आवश्यकता के अनुसार सही मोड ("r", "w", "a" आदि) का चुनाव करें।

  3. NULL फाइल पॉइंटर पर ऑपरेशन करना:

    • यह प्रोग्राम क्रैश करा सकता है।

    • सही तरीका: हर फाइल ओपनिंग के बाद if(fp == NULL) की जांच करें।

निष्कर्ष: क्यों जरूरी है पॉइंटर और फ़ाइल संचलन की गहरी समझ

पॉइंटर और फाइल संचलन न केवल C भाषा के मूल स्तंभ हैं, बल्कि किसी भी प्रोग्रामिंग भाषा की नींव भी इन्हीं से बनती है। पॉइंटर आपकी प्रोग्रामिंग को मेमोरी से जोड़ता है और आपको सिस्टम के अधिक नजदीक लाता है। वहीं फाइल संचलन आपकी एप्लिकेशन को स्थायी डेटा स्टोर करने की क्षमता देता है।

यदि आप इन दोनों की गहराई से समझ बना लेते हैं तो ना केवल आप बेहतर कोड लिख पाएंगे, बल्कि आपका लॉजिक भी मजबूत होगा। ये विषय इंटरव्यूज़, कॉलेज असाइंमेंट्स, और रियल-वर्ल्ड प्रोजेक्ट्स में बार-बार काम आते हैं।

इसलिए, अगली बार जब आप कोई कोड लिखें तो पॉइंटर को प्यार से हैंडल करें और फाइल संचलन को ज़िम्मेदारी से।

FAQs: अक्सर पूछे जाने वाले सवाल

Q1: क्या पॉइंटर केवल C और C++ में होते हैं?

उत्तर: मुख्य रूप से हां, लेकिन Java, Python जैसे भाषाओं में भी अप्रत्यक्ष रूप से पॉइंटर जैसी कार्यविधियाँ होती हैं।

Q2: पॉइंटर से कोड फास्ट कैसे होता है?

उत्तर: क्योंकि यह डायरेक्ट मेमोरी एक्सेस करता है, जिससे डेटा कॉपी की आवश्यकता नहीं पड़ती और परफॉर्मेंस बेहतर होती है।

Q3: क्या फाइल हैंडलिंग केवल टेक्स्ट फाइल के लिए होती है?

उत्तर: नहीं, फाइल हैंडलिंग बाइनरी फाइल, इमेज, वीडियो, और ऑडियो तक के लिए उपयोगी होती है।

Q4: fscanf() और fgets() में क्या अंतर है?

उत्तर: fscanf() डेटा को फॉर्मेट करके पढ़ता है जबकि fgets() लाइन-बाय-लाइन स्ट्रिंग के रूप में डेटा पढ़ता है।

Q5: क्या पॉइंटर और फाइल संचलन को सीखना मुश्किल है?

उत्तर: शुरुआत में हाँ, लेकिन एक बार कॉन्सेप्ट क्लियर हो जाए तो यह बेहद शक्तिशाली टूल बन जाता है।

alt="C भाषा में Pointer और File Handling की संपूर्ण जानकारी हिंदी में"


Previous Post Next Post

Contact Form