एक फाइल डिस्क पर एक भौतिक भंडारण स्थान है और एक निर्देशिका एक तार्किक पथ है जिसका उपयोग फाइलों को व्यवस्थित करने के लिए किया जाता है। निर्देशिका में फ़ाइल मौजूद है।
फाइल पर हम जो तीन ऑपरेशन कर सकते हैं, वे इस प्रकार हैं -
- फ़ाइल खोलें।
- प्रक्रिया फ़ाइल (पढ़ें, लिखें, संशोधित करें)।
- फ़ाइल सहेजें और बंद करें।
एल्गोरिदम
फ़ाइल से एक लाइन को हटाने के लिए C प्रोग्राम की व्याख्या करने के लिए नीचे एक एल्गोरिथम दिया गया है।
चरण 1 - रनटाइम पर हटाने के लिए फ़ाइल पथ और लाइन नंबर पढ़ें।
चरण 2 - फाइल को रीड मोड में खोलें और सोर्स फाइल में स्टोर करें।
चरण 3 - एक अस्थायी फ़ाइल को राइट मोड में बनाएं और खोलें और उसके संदर्भ को अस्थायी फ़ाइल में संग्रहीत करें।
चरण 4 - लाइन नंबर ट्रैक करने के लिए एक गिनती =1 शुरू करें।
चरण 5 - स्रोत फ़ाइल से एक पंक्ति पढ़ें और उसे बफर में संग्रहीत करें।
चरण 6 - अगर करंट लाइन हटाने के लिए लाइन के बराबर नहीं है यानी अगर (लाइन !=काउंट), तो अस्थायी फाइल में बफर लिखें।
चरण 7 - इंक्रीमेंट काउंट++.
चरण 8 - स्रोत फ़ाइल के अंत तक चरण 5-7 दोहराएं।
चरण 9 - दोनों फाइलों को बंद करें यानी स्रोत फाइल और अस्थायी फाइल।
चरण 10 - हमारी मूल स्रोत फ़ाइल हटाएं।
चरण 11 - स्रोत फ़ाइल पथ के साथ अस्थायी फ़ाइल का नाम बदलें।
कार्यक्रम
फ़ाइल से एक पंक्ति को हटाने के लिए C प्रोग्राम निम्नलिखित है:-
#include <stdio.h> #include <stdlib.h> #define BUFFER_SIZE 1000 void deleteLine(FILE *src, FILE *temp, const int line); void printFile(FILE *fptr); int main(){ FILE *src; FILE *temp; char ch; char path[100]; int line; src=fopen("cprogramming.txt","w"); printf("enter the text.press cntrl Z:\n"); while((ch = getchar())!=EOF){ putc(ch,src); } fclose(src); printf("Enter file path: "); scanf("%s", path); printf("Enter line number to remove: "); scanf("%d", &line); src = fopen(path, "r"); temp = fopen("delete.tmp", "w"); if (src == NULL || temp == NULL){ printf("Unable to open file.\n"); exit(EXIT_FAILURE); } printf("\nFile contents before removing line.\n\n"); printFile(src); // Move src file pointer to beginning rewind(src); // Delete given line from file. deleteLine(src, temp, line); /* Close all open files */ fclose(src); fclose(temp); /* Delete src file and rename temp file as src */ remove(path); rename("delete.tmp", path); printf("\n\n\nFile contents after removing %d line.\n\n", line); // Open source file and print its contents src = fopen(path, "r"); printFile(src); fclose(src); return 0; } void printFile(FILE *fptr){ char ch; while((ch = fgetc(fptr)) != EOF) putchar(ch); } void deleteLine(FILE *src, FILE *temp, const int line){ char buffer[BUFFER_SIZE]; int count = 1; while ((fgets(buffer, BUFFER_SIZE, src)) != NULL){ if (line != count) fputs(buffer, temp); count++; } }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
enter the text.press cntrl Z: Hi welcome to my world This is C programming tutorial You want to learn C programming Subscribe the course in TutorialsPoint ^Z Enter file path: cprogramming.txt Enter line number to remove: 2 File contents before removing line. Hi welcome to my world This is C programming tutorial You want to learn C programming Subscribe the course in TutorialsPoint File contents after removing 2 line. Hi welcome to my world You want to learn C programming Subscribe the course in TutorialsPoint