Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम फ़ाइल से एक लाइन को हटाने के लिए

एक फाइल डिस्क पर एक भौतिक भंडारण स्थान है और एक निर्देशिका एक तार्किक पथ है जिसका उपयोग फाइलों को व्यवस्थित करने के लिए किया जाता है। निर्देशिका में फ़ाइल मौजूद है।

फाइल पर हम जो तीन ऑपरेशन कर सकते हैं, वे इस प्रकार हैं -

  • फ़ाइल खोलें।
  • प्रक्रिया फ़ाइल (पढ़ें, लिखें, संशोधित करें)।
  • फ़ाइल सहेजें और बंद करें।

एल्गोरिदम

फ़ाइल से एक लाइन को हटाने के लिए 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

  1. C++ में एक लाइन के मध्य-बिंदु को खोजने का प्रोग्राम

    इस समस्या में, हमें दो बिंदु A और B दिए गए हैं, जो एक रेखा के आरंभ और अंत बिंदु हैं। हमारा काम C++ में एक लाइन के मध्य-बिंदु को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - यहाँ, हमारे पास एक रेखा है जिसमें शुरुआती और अंत बिंदु A(x1, y1) और B(x2, y2) हैं। और हमें रेखा के मध्य-बिंदु को खोजन

  1. मेरे टिंकर मेनू यूआई से धराशायी लाइन कैसे निकालें?

    टिंकर में मेनू विजेट का उपयोग किसी एप्लिकेशन के नेविगेशन बार में मेनू बार बनाने के लिए किया जाता है। यह टाइटल बार से पहले एप्लिकेशन विंडो के शीर्ष पर स्थित है। कभी-कभी, हम एक धराशायी रेखा देखते हैं जो पहले मेनू आइटम के शीर्ष पर दिखाई देती है। टियरऑफ़ (बूलियन) मेनू में विशेषता निर्दिष्ट करती है कि यद

  1. टिंकर मेनू यूआई से धराशायी रेखा को कैसे हटाएं?

    एक मेनू बार में लंबवत रूप से स्टैक्ड मेनू आइटम होते हैं। हम Menu(root) . के ऑब्जेक्ट को इनिशियलाइज़ करके एक मेनू बार बना सकते हैं . जब भी हम किसी एप्लिकेशन में मेनू बार को इनिशियलाइज़ करते हैं, तो यह मेनू बार के शीर्ष पर एक लाइन सेपरेटर प्रदर्शित करता है। मेनू से विभाजक या धराशायी रेखा को हटाने के