Write a program to replace one line with another line in a file.
#include<stdio.h> #include"fileinfo.h" void Replace_Line_in_File(FILE*,int,char*); int main() { FILE *fptr; int LinetoReplace; char fileName[32]; printf("Enter FileName = "); scanf("%[^\n]",fileName); fptr = fopen(fileName,"r"); if(fptr == NULL) { printf("file does not present in this directory\n"); return 0; } printf("Which line do you want to Replace = "); scanf("%d",&LinetoReplace); Replace_Line_in_File(fptr,LinetoReplace,fileName); return 0; } void Replace_Line_in_File(FILE* fp,int line,char* file) { int LineCount,MaxStrLen,i; char StringToAdd[100],**cp; LineCount = Get_Total_Lines(fp); if(line >= 1 && line <= LineCount) { line--; printf("Enter String to Replace\n"); scanf(" %[^\n]",StringToAdd); cp = (char**)malloc(sizeof(char*)*LineCount); MaxStrLen = Get_Max_String_Length(fp); for(i = 0;i<LineCount;i++) { cp[i] = (char*)malloc(MaxStrLen+1); fgets(cp[i],MaxStrLen+1,fp); } fclose(fp); fp = fopen(file,"w"); for(i = 0;i<LineCount;i++) { if(i == line) { fputs(StringToAdd,fp); fputc('\n',fp); } else fputs(cp[i],fp); } fclose(fp); printf("Replacing Done.....\n"); } else { fclose(fp); printf("Invalid Line Number\n"); } }
Note: File name d1 is present in the current working directory.
cat d1 Lot To Learn BlackBerry Iphone Incredible India
Output
Enter FileName = d1 Which line do you want to Replace = 2 Enter String to Replace BlackBerry Z10 Repacling Done.....
Lot To Learn BlackBerry Z10 Iphone Incredible India