Evo pokusavam napraviti program koji pronalazi zadani string unutar tekstualne datoteke i zamjenjuje ga sa drugim zadanim nizom. Problem je sta nikako nemogu napravit a da ne stvaram pomocnu datoteku. Dali se to uopce moze?
Evo mog koda (malo je neuredno al moze se skuzit...):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ispisi (char *ime) {
FILE *f;
char c;
if ((f=fopen(ime,"r"))) {
printf("\n=================== %s.txt ==================\n",ime);
while ((c = fgetc(f)) != EOF)
printf("%c", c);
printf("==================================================\n\n");
}
else perror("\n"), exit(1);
fclose(f);
}
void promjeni (char *ime) {
FILE *f, *f2;
char nadi[20], zamjena[20], red[20], pomocni[20],*r;
int br_zamjena=0, l_nadi, l_zamjena;
printf("Pronadi: ");
scanf("%s",nadi);
printf("Zamjeni sa: ");
scanf("%s",zamjena);
l_nadi=strlen(nadi);
l_zamjena=strlen(zamjena);
f=fopen(ime,"r");
f2=fopen("radni","w");
while((fgets(red,20,f))) {
while ((r = strstr(red,nadi))) {
strcpy(pomocni,r+l_nadi);
strcpy(r, zamjena);
strcat(r,pomocni);
br_zamjena++;
r +=l_zamjena;
}
fputs(red,f2);
}
fclose(f);
fclose(f2);
printf("Broj zamjena: %d\n",br_zamjena);
}
void zamjeni (char *ime1, char *ime2) {
FILE *f1, *f2;
char c;
if ((f1=fopen(ime1,"w")) && (f2=fopen(ime2,"r")))
while ((c = fgetc(f2)) != EOF) fputc(c, f1);
else perror("\n"), exit(1);
fclose(f1);
fclose(f2);
f2=fopen(ime2,"w");
fclose(f2);
}
int main()
{
char ime[10], radni[]="radni";
printf("Upisi ime datoteke koju zelis otvoriti: ");
scanf("%s",ime);
ispisi(ime);
promjeni(ime);
zamjeni(ime, radni);
ispisi(ime);
return 0;
}