Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C program to remove a line from the file
A file is a physical storage location on disk and a directory is a logical path which is used to organise the files. A file exists within a directory.
The three operations that we can perform on file are as follows −
- Open a file.
- Process file (read, write, modify).
- Save and close file.
Algorithm
An algorithm is given below to explain the C program to remove a line from the file.
Step 1 − Read file path and line number to remove at runtime.
Step 2 − Open file in read mode and store in source file.
Step 3 − Create and open a temporary file in write mode and store its reference in Temporary file.
Step 4 − Initialize a count = 1 to track line number.
Step 5 − Read a line from source file and store it in buffer.
Step 6 − If current line is not equal to line to remove i.e. if (line != count), then write buffer to temporary file.
Step 7 − Increment count++.
Step 8 − Repeat step 5-7 till end of source file.
Step 9 − Close both files i.e. source file and temporary file.
Step 10 − Delete our original source file.
Step 11 − Rename temporary file with source file path.
Program
Following is the C program to remove a line from the file −
#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:
");
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.
");
exit(EXIT_FAILURE);
}
printf("
File contents before removing line.
");
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("
File contents after removing %d line.
", 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++;
}
}
Output
When the above program is executed, it produces the following result −
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