Проблема была в найти и заменить строку в файле C.Найти и заменить в файле C
Я новичок в файлах C. Я пробовал следующий код, но я не получил никакого вывода:
#include<stdio.h>
#include<string.h>
int main()
{
FILE *f1,*f2;
char *src,*dest,*s1,ch,ch1,ch2,ch3;
int i;
f1=fopen("input.txt","rw");
f2=fopen("dummy.txt","rw");
src="mor";
dest="even";
while(ch!=EOF)
{
ch=fgetc(f1);
if(ch==src[0]) //Finding 1st char of src
{
fgets(s1,strlen(src),f1);
if(strcmp(src+1,s1)==0) //Finding occurance of "src" in file
{
fseek(f1,strlen(src)-1,SEEK_CUR);
while(ch1!=EOF) //Copying remaining data into another file
{
ch1=fgetc(f1);
fputc(ch1,f2);
}
fseek(f1,-strlen(src),SEEK_CUR);
for(i=0;i<strlen(dest);i++) //replacing "src" with "dest"
{
ch2=dest[i];
fputc(ch2,f1);
}
fclose(f1);
f1=fopen("input.txt","a");
while(ch3!=EOF) //Appending previosly copied data into 1st file
{
ch3=fgetc(f2);
fputc(ch3,f1);
}
}
}
}
fclose(f1);
fclose(f2);
}
содержимое input.txt является «утро».
Просьба указать ОШИБКА в логике, а также дать эффективный код для этого же.
Спасибо заранее.
Наиболее очевидный эффективный код будет выглядеть примерно так: 'sed 's/src/dest/g" input.txt'. Выполнение этого непосредственно в C не имеет большого смысла (по крайней мере, на мой взгляд). –
@ Jerry Coffin ... Сэр, но вопрос попросил проверить наше понимание работы с файлами в C !!! –
«вопрос был прошен, чтобы проверить наше понимание работы с файлами в C». Это вопрос домашней работы? Если это так, вы можете добавить тег «домашняя работа». –