प्रौद्योगिकी साझेदारी

[C language] सञ्चिकासञ्चालनैः सह क्रीडन्तु

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌟🌟लेखकस्य मुखपृष्ठम् : १.क्षणिकाः__ २.

🌟🌟सम्बन्धी स्तम्भः १.ग भाषा

सामग्रीसूची

आमुख

1. सञ्चिकानां उद्घाटनं बन्दीकरणं च

1. प्रवाहः

2. मानकप्रवाहः

3. पाठसञ्चिकाः द्विचक्रीयसञ्चिकाः च

4. सञ्चिकायाः ​​उद्घाटनं समापनञ्च नियन्त्रयन्ति ये कार्याणि

2. सञ्चिकानां क्रमिकपठनं लेखनं च

3. सञ्चिकानां यादृच्छिकपठनं लेखनं च

1.fseek कार्यम्

2.ftell कार्यम्

3.rewind कार्यम्

4. सञ्चिकापठनस्य अन्त्यस्य निर्धारणम्

सारांशं कुरुत


आमुख

यदा वयं प्रोग्राम् लिखामः तदा प्रायः वयं चरेबल् मध्ये data संगृह्णामः । यदि कार्यक्रमः निर्गच्छति स्मृतिः पुनः प्राप्ता भवति तर्हि एते दत्तांशाः नष्टाः भविष्यन्ति । अतः किं अस्माकं कृते एतत् दत्तांशं निरन्तरं रक्षितुं कोऽपि उपायः अस्ति यत् पुनः कार्यक्रमः उद्घाटितः चेत् दत्तांशः अद्यापि विद्यते? उत्तरं हाँ इति । किं कर्तुं शक्यते एतत्- १.सञ्चिकासञ्चालनम्

1. सञ्चिकानां उद्घाटनं बन्दीकरणं च

1. प्रवाहः

कार्यक्रमस्य दत्तांशः बाह्ययन्त्रेभ्यः निर्गमः आवश्यकः, बाह्ययन्त्रेभ्यः अपि निवेशः करणीयः । भिन्न-भिन्न-यन्त्राणां कृते निवेश-निर्गम-विधिः भिन्ना भवति । विभिन्नेषु निवेश-निर्गम-यन्त्रेषु अस्माकं कार्याणि सुलभं कर्तुं अस्माकं "धारा" इति अत्यन्तं अमूर्त-अवधारणा अस्ति । C भाषायां सञ्चिकासु, पटलेषु, कीबोर्ड् इत्यादिषु निवेश-निर्गम-क्रियाः सर्वाणि "धारा"-माध्यमेन क्रियन्ते । सामान्यतया यदि वयं दत्तांशं लिखितुम् अथवा दत्तांशं पठितुम् इच्छामः तर्हि अस्माभिः धारा उद्घाटयितुं आवश्यकम् ।

2. मानकप्रवाहः

यदा C भाषायाः कार्यक्रमः आरभ्यते तदा पूर्वनिर्धारितरूपेणत्रीणि धाराःअस्माकं कृते पूर्वमेव उद्घाटितम् :

स्तदीन्--मानकनिवेशधारा, अधिकतया कीबोर्डतः निवेशः ।

stdout इति--मानकनिर्गमधारा, अधिकांशप्रसङ्गेषु मॉनिटरं प्रति निर्गमः ।

स्तदेर्र्--मानकदोषधारा, अधिकांशप्रसङ्गेषु मॉनिटरं प्रति निर्गमः ।

यतः एतानि त्रीणि धाराः पूर्वनिर्धारितरूपेण उद्घाटितानि सन्ति, अतः वयं scanf, printf इत्यादीनां कार्याणां उपयोगेन प्रत्यक्षतया input and output operations कर्तुं शक्नुमः ।

एतेषां त्रयाणां धाराणामपि प्रकाराः सन्ति ।सञ्चिकासूचकः (FILE*) २. .यदा वयं सञ्चिकाक्रियाः कुर्मः तदा वयं पारयामःसञ्चिकासूचकचरः परोक्षरूपेण तया सह सम्बद्धां सञ्चिकां अन्वेष्टुं शक्नोति ।

3. पाठसञ्चिकाः द्विचक्रीयसञ्चिकाः च

दत्तांशः कथं व्यवस्थितः इति अवलम्ब्य दत्तांशसञ्चिकाः आह्वयन्तिपाठसञ्चिकावाद्विचक्रीय सञ्चिका . दत्तांशः स्मृतौ द्विचक्रीयरूपेण संगृह्यते,यदि रूपान्तरणं विना बाह्यभण्डारसञ्चिकायां निर्गम्यते तर्हि अस्तिद्विचक्रीय सञ्चिका
यदि बाह्यभण्डारणस्थाने ASCII कोड् मध्ये संग्रहीतुं आवश्यकं भवति तर्हि भण्डारणात् पूर्वं परिवर्तनं करणीयम् ।ASCII वर्णरूपेण संगृहीता सञ्चिका अस्तिपाठसञ्चिका
सञ्चिकायां दत्तांशखण्डः कथं संगृह्यते ?
वर्णाः सर्वदा ASCII रूपेण संगृह्यन्ते, तथा च संख्यात्मकदत्तांशः ASCII अथवा द्विचक्रीयरूपेण संग्रहीतुं शक्यते । यथा, यदि पूर्णाङ्कः 10000 अस्ति, यदि सः ASCII कोडरूपेण डिस्कं प्रति निर्गच्छति तर्हि सः डिस्कस्य उपरि 5 बाइट् (प्रत्येकस्य वर्णस्य कृते एकः बाइट्) व्याप्नोति, यदा तु द्विचक्रीयरूपेण निर्गमः भवति तर्हि सः डिस्कमध्ये केवलं ४ बाइट् गृह्णीयात् ।

4. सञ्चिकायाः ​​उद्घाटनं समापनञ्च नियन्त्रयन्ति ये कार्याणि

एतत् पूर्वापेक्षं ज्ञानं अवगत्य, विषयं गच्छामः - सञ्चिकाः उद्घाटयितुं सञ्चिकाः बन्दं च । C भाषा द्वौ कार्यौ प्रदाति, ये क्रमशः सञ्चिकानां उद्घाटनस्य बन्दीकरणस्य च उत्तरदायी भवन्ति आद्यरूपाः निम्नलिखितरूपेण सन्ति ।

सञ्चिकां उद्घाटयन्तु : १.
संचिका * फोपेन् ( const char * सञ्चिकानाम, const char * मोड );
सञ्चिकां पिधाय : १.
int fclose इति ( FILE * धारा );

fopen फंक्शन् इत्यस्य द्वौ पैरामीटर् स्तः, .प्रथमः पैरामीटर् स्ट्रिंग् रूपेण व्यक्तः भवतिसञ्चिकानाम, द्वितीयः पैरामीटर् सञ्चिका अस्तिमुक्त विधि, तारेन प्रतिनिधितः .एतस्य फंक्शन् इत्यस्य उपयोगं कुर्वन् अस्माभिः aसञ्चिकासूचकचरः प्राप्तुं यदा सञ्चिका उद्घाटयितुं असफलं भवति तदा सा शून्यसूचकं प्रत्यागच्छति । उद्घाटनविधिविषये अत्र निम्नलिखितम् अस्ति ।

मुक्त विधिअर्थयदि निर्दिष्टा सञ्चिका नास्ति
"र" (पठितमात्रम्) २.
दत्तांशं प्रविष्टुं विद्यमानं पाठसञ्चिकां उद्घाटयन्तु
शून्यसूचकं प्रत्यागच्छति
"व" (लेखमात्रम्) २.
दत्तांशं निर्गन्तुं पाठसञ्चिकां उद्घाटयन्तु
नूतनं सञ्चिकां रचयन्तु
"क" (उपयोगः) २.पाठसञ्चिकायाः ​​अन्ते दत्तांशं योजयन्तुनूतनं सञ्चिकां रचयन्तु
"रब" (पठनमात्र) २.दत्तांशं प्रविष्टुं द्विचक्रीयसञ्चिकां उद्घाटयन्तुशून्यसूचकं प्रत्यागच्छति
"wb" (केवलं लेखनम्) २.दत्तांशं निर्गन्तुं द्विचक्रीयसञ्चिकां उद्घाटयन्तुनूतनं सञ्चिकां रचयन्तु
"अब" (उपयोगः) २.द्विचक्रीयसञ्चिकायाः ​​अन्ते दत्तांशं योजयन्तुनूतनं सञ्चिकां रचयन्तु
"र+" (पठे लिखे च) २.पठनलेखनार्थं पाठसञ्चिकां उद्घाटयन्तुशून्यसूचकं प्रत्यागच्छति
"व+" (पठ लिखत) २.पठनलेखनार्थं नूतनं पाठसञ्चिकां रचयन्तुनूतनं सञ्चिकां रचयन्तु
"क+" (पठे लिखे च) २.सञ्चिकां उद्घाट्य सञ्चिकायाः ​​अन्ते पठन्तु लिखन्तु चनूतनं सञ्चिकां रचयन्तु
"रब+" (पठे लिखे च) २.पठनलेखनार्थं द्विचक्रीयसञ्चिकां उद्घाटयन्तुशून्यसूचकं प्रत्यागच्छति
"wb+" (पठे लिखे च)
पठनलेखनार्थं नूतनं द्विचक्रीयसञ्चिकां रचयन्तुनूतनं सञ्चिकां रचयन्तु
"अब्+" (पठे लिखे च) २.
द्विचक्रीयसञ्चिकां उद्घाट्य सञ्चिकायाः ​​अन्ते पठन्तु लिखन्तु चनूतनं सञ्चिकां रचयन्तु

fclose फंक्शन् कृते तस्य पैरामीटर् सञ्चिकासूचकः अस्ति, यः सञ्चिकासूचकेन सूचितां सञ्चिकां पिधातुं उपयुज्यते ।

तदनन्तरं वयं सञ्चिकां उद्घाट्य पिधातुं प्रयत्नशीलाः स्मः :

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE* pf = fopen("test.txt", "w");
  5. if (pf == NULL)//文件打开失败则退出程序
  6. {
  7. perror("fopen");
  8. return 0;
  9. }
  10. printf("文件打开成功n");
  11. fclose(pf);
  12. pf = NULL;//避免出现野指针,及时制空
  13. return 0;
  14. }
संचालन परिणाम : १.

द्रष्टुं शक्यते यत् उद्घाटनविधिः "w" इति कारणतः "test.txt" इति सञ्चिका मार्गे अवश्यमेव दृश्यते ।

2. सञ्चिकानां क्रमिकपठनं लेखनं च

तदनन्तरं वयं कृते अनेकानि कार्याणि परिचययामःसञ्चिकायां दत्तांशं पठन्तु वा लिखन्तु वा

कार्यनामनियोगप्रयोज्यम्
fgetcवर्ण निवेश कार्यसर्वे निवेशधाराः
fputcवर्णनिर्गम कार्यसर्वाणि निर्गमधाराः
fgets इतिपाठरेखानिवेशकार्यम्सर्वे निवेशधाराः
fputs इतिपाठरेखानिर्गमकार्यम्सर्वाणि निर्गमधाराः
fscanfप्रारूप इनपुट फंक्शनसर्वे निवेशधाराः
fprintfस्वरूपनिर्गम कार्य सर्वाणि निर्गमधाराः
fread इति इतिद्विचक्रीय इनपुटसञ्चिकानिवेशधारा
fwrite इतिद्विचक्रीय आउटपुटसञ्चिकानिर्गमधारा

तदनन्तरं वयं उपयोक्तुं प्रयत्नशीलाः स्मःfscanfतथाfprintfनियोग:

एतयोः कार्ययोः प्रथमः पैरामीटर् सञ्चिकासूचकः अस्ति, यस्य उपयोगः सञ्चिकादत्तांशपठनलेखनयोः कृते भवति । तदनन्तरं पैरामीटर्स् scanf तथा printf कार्ययोः समानाः सन्ति ।

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE* pf = fopen("test.txt", "w");//要写入数据,以写的形式打开文件
  5. if (pf == NULL)
  6. {
  7. perror("fopen");
  8. return 0;
  9. }
  10. fprintf(pf, "123456");//向文件中写入数据
  11. fclose(pf);
  12. pf = NULL;
  13. return 0;
  14. }

यथा भवन्तः पश्यन्ति, सञ्चिकायां दत्तांशः लिखितः अस्ति । तदनन्तरं वयं सञ्चिकादत्तांशं स्क्रीन् प्रति मुद्रयितुं fscanf फंक्शन् इत्यस्य उपयोगं कुर्मः:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char str[20] = { 0 };
  5. FILE* pf = fopen("test.txt", "r");//要读取数据,以读的形式打开文件
  6. if (pf == NULL)
  7. {
  8. perror("fopen");
  9. return 0;
  10. }
  11. fscanf(pf, "%s", str);//读取数据到str当中
  12. printf(str);
  13. fclose(pf);
  14. pf = NULL;
  15. return 0;
  16. }
संचालन परिणाम : १.

3. सञ्चिकानां यादृच्छिकपठनं लेखनं च

1.fseek कार्यम्

fseek फंक्शन् इत्यस्य कार्यं भवतिसञ्चिकासूचकस्य स्थितिः, ऑफसेट् च आधारीकृत्यस्थितिःसञ्चिकासूचकः . अस्य आद्यरूपं यथा - १.

int fseek ( FILE * धारा, दीर्घ int ऑफसेट, int उत्पत्ति );

अस्य प्रथमः पैरामीटर् सञ्चिकासूचकः, द्वितीयः पैरामीटर् सेट् स्थानस्य सापेक्षः ऑफसेट्, तृतीयः पैरामीटर् च सेट् स्थानं भवति ।

ग भाषा त्रीणि परिभाषयतिमैक्रो, तृतीयपैरामीटर् रूपेण तेषु एकं चिन्वितुं शक्नुवन्ति:

SEEK_SET: सञ्चिकायाः ​​आरम्भस्थानं

SEEK_CUR: सञ्चिकासूचकस्य वर्तमानस्थानं

SEEK_END: ​​सञ्चिकायाः ​​अन्तः

सञ्चिकासूचकं ज्ञात्वा वयं सञ्चिकायाः ​​निर्दिष्टस्थाने पठितुं लिखितुं वा शक्नुमः ।

2.ftell कार्यम्

पुनरागमनाय ftell function इत्यस्य उपयोगः भवतिआरम्भस्थानस्य सापेक्षं सञ्चिकासूचकस्य ऑफसेट् . कार्य आद्यरूप : १.

long int ftell ( FILE * धारा );

3.rewind कार्यम्

rewind function इत्यस्य उपयोगः भवतिसञ्चिकासूचकस्य स्थानं सञ्चिकायाः ​​आरम्भे प्रत्यागच्छतु . अस्य कार्यस्य आद्यरूपः : १.

void rewind ( FILE * धारा );

4. सञ्चिकापठनस्य अन्त्यस्य निर्धारणम्

1. हिपाठसञ्चिका, प्रथमं उपयोक्तुं शक्नुमःfgetcफंक्शन् सञ्चिकायां वर्णानाम् माध्यमेन लूप् करोति यावत् EOF न पठ्यते, सूचयतिसञ्चिकापठनं समाप्तं भवति

2. हिद्विचक्रीय सञ्चिका,वयं प्रयुञ्ज्महेfread इति इतिफंक्शन् स्वस्य रिटर्न् वैल्यू निर्धारयति:पठनीयायाः वास्तविकसङ्ख्यायाः अपेक्षया न्यूनं वा ? .यदि न्यूनम्पठनं समाप्तं भवति।

उपर्युक्तयोः प्रकरणयोः कृते सञ्चिकापठनस्य अन्ते, वयं निरन्तरं न्यायं कर्तुं शक्नुमःकारणं यत् सञ्चिकापठनं किमर्थं समाप्तम् . द्वौ कार्यौ परिचययतु : १.feofतथालोहः

feofकृते प्रयुक्तं कार्यम्सञ्चिकापठनस्य अन्तं निर्धारयन्तुकारणम्‌किं वा न वासञ्चिकायाः ​​अन्तः सम्मुखीकृतः . अस्य आद्यरूपं यथा - १.

int feof ( FILE * धारा );

यदि सञ्चिका कारणम् अस्तिसञ्चिकायाः ​​अन्ते यावत् पठन्तुयदा पठनं समाप्तं भवति तदा EOF प्रत्यागच्छति;

        लोहःकृते प्रयुक्तं कार्यम्सञ्चिकापठनस्य अन्तं निर्धारयन्तुकारणम्‌किं वा न वाएकः I/O त्रुटिः अभवत् . आद्यरूपं यथा भवति ।

int ferror ( FILE * धारा );

यदि सञ्चिका कारणम् अस्तिएकः I/O त्रुटिः अभवत्यदा पठनं सम्पन्नं भवति तदा अन्येषु सन्दर्भेषु 0 अशून्यं मूल्यं प्रत्यागच्छति;

तदनन्तरं वयं सञ्चिकापठनस्य अन्तस्य न्यायार्थं कोडस्य एकं भागं लिखितुं प्रयत्नशीलाः स्मः ।

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int c = 0;
  5. FILE* fp = fopen("test.txt", "r");
  6. if (fp == NULL)
  7. {
  8. perror("fopen");
  9. return 0;
  10. }
  11. while ((c = fgetc(fp)) != EOF)//返回EOF则读取结束
  12. {
  13. putchar(c);
  14. }
  15. //判断读取结束的原因
  16. if (ferror(fp))
  17. puts("I/O错误n");
  18. else if (feof(fp))
  19. puts("文件读取结束n");
  20. fclose(fp);
  21. fp = NULL;
  22. return 0;
  23. }

सारांशं कुरुत

अद्य वयं सञ्चिकासञ्चालनस्य विषये, सञ्चिकाः कथं उद्घाटयितुं बन्दं च कर्तुं, सञ्चिकाभ्यः दत्तांशं लिखितुं वा दत्तांशं पठितुं वा, सञ्चिकासूचकान् समायोजयितुं कार्याणि, सञ्चिकापठनस्य अन्तः निर्धारयितुं च ज्ञातवन्तः यदि भवान् मन्यते यत् ब्लोगरः यत् उक्तवान् तत् उत्तमम् अस्ति तर्हि कृपया लघु लाइकं त्यक्त्वा भवतः समर्थनस्य धन्यवादः❤❤❤