কম্পিউটার

ফাইল থেকে একটি লাইন মুছে ফেলার জন্য সি প্রোগ্রাম


একটি ফাইল ডিস্কে একটি ভৌত ​​স্টোরেজ অবস্থান এবং একটি ডিরেক্টরি হল একটি লজিক্যাল পাথ যা ফাইলগুলিকে সংগঠিত করতে ব্যবহৃত হয়। একটি ডিরেক্টরির মধ্যে একটি ফাইল বিদ্যমান৷

আমরা ফাইলে যে তিনটি অপারেশন করতে পারি তা হল -

  • একটি ফাইল খুলুন।
  • প্রসেস ফাইল (পড়ুন, লিখুন, পরিবর্তন করুন)।
  • ফাইল সংরক্ষণ করুন এবং বন্ধ করুন।

অ্যালগরিদম

ফাইল থেকে একটি লাইন মুছে ফেলার জন্য 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. উইন্ডোজ কমান্ড লাইন থেকে একটি পাঠ্য ফাইলে আউটপুট পুনর্নির্দেশ করুন

  2. C++ এ একটি লাইনের মধ্যবিন্দু খুঁজে বের করার জন্য প্রোগ্রাম

  3. কিভাবে আমার tkinter মেনু UI থেকে ড্যাশড লাইন সরাতে হয়?

  4. Tkinter মেনু UI থেকে ড্যাশড লাইন কিভাবে সরাতে হয়?