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

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

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

फाइल पर हम तीन ऑपरेशन कर सकते हैं:

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

एल्गोरिथम

फाइल से एक लाइन हटाने के लिए C प्रोग्राम को समझाने के लिए एक एल्गोरिथम नीचे दिया गया है।

चरण 1 - रनटाइम पर फाइल पथ और हटाने के लिए लाइन नंबर पढ़ें।

चरण 2 - फाइल को रीड मोड में खोलें और सोर्स फाइल में स्टोर करें।

चरण 3 - एक अस्थायी फाइल बनाएं और राइट मोड में खोलें और इसका रेफरेंस टेम्पररी फाइल में स्टोर करें।

चरण 4 - लाइन नंबर ट्रैक करने के लिए count = 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++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम C++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम

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

  1. Tkinter मेनू UI से डैश्ड लाइन कैसे हटाएं? Tkinter मेनू UI से डैश्ड लाइन कैसे हटाएं?

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

  1. Tkinter मेनू UI से डैश्ड लाइन कैसे हटाएं? Tkinter मेनू UI से डैश्ड लाइन कैसे हटाएं?

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