একটি ফাইল ডিস্কে একটি ভৌত স্টোরেজ অবস্থান এবং একটি ডিরেক্টরি হল একটি লজিক্যাল পাথ যা ফাইলগুলিকে সংগঠিত করতে ব্যবহৃত হয়। একটি ডিরেক্টরির মধ্যে একটি ফাইল বিদ্যমান৷
৷আমরা ফাইলে যে তিনটি অপারেশন করতে পারি তা হল -
- একটি ফাইল খুলুন।
- প্রসেস ফাইল (পড়ুন, লিখুন, পরিবর্তন করুন)।
- ফাইল সংরক্ষণ করুন এবং বন্ধ করুন।
অ্যালগরিদম
ফাইল থেকে একটি লাইন মুছে ফেলার জন্য 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