#include #include #include #include #define MAKS_FILE_SIZE 10 /* u kilobajtima */ #define MAKS_TRAZI 20 char tekst[MAKS_FILE_SIZE*1024]=""; char rezerva[MAKS_FILE_SIZE*1024]=""; char staro[MAKS_TRAZI]="", novo[MAKS_TRAZI+10]=""; char *strext(char *, int, int); /* 12345678901234567890 123456789012345678901234567890 ovo je tekst koji treba ubacit */ main() { FILE *fp; int duz_staro, duz_novo, duz_tekst, duz_ostatak, start_ostatak, i; char znak, *pzc, *temp, prazno[2]="", bufer[MAKS_FILE_SIZE*1024]="", datoteka[100]="", izbor; while (izbor!='n' && izbor!='N') { clrscr(); printf("\n\t DOKUMENT: "); gets(datoteka); printf(" FIND: "); gets(staro); printf("\n REPLACE: "); gets(novo); /* --------- OTVARANJE I OCITAVANJE DOKUMENTA --------- */ fp = fopen(datoteka, "r"); if (fp==NULL) { printf("\n\n DOKUMENT NIJE USPJESNO OTVOREN"); getch(); exit(1); } for (i=0; (znak=fgetc(fp))!=EOF; i++) tekst[i]=znak; fclose(fp); /* ---------------------------------------------------- */ strcpy(rezerva,tekst); duz_staro = strlen(staro); duz_novo = strlen(novo); duz_tekst = strlen(tekst); strcpy(bufer,prazno); printf("%s", tekst); printf("\n\n duz_staro = %d", duz_staro); printf("\n\n duz_novo = %d", duz_novo); printf("\n\n duz_tekst = %d", duz_tekst); getch(); RAD: pzc = strstr(tekst,staro); if( pzc!=NULL) { temp = strext(tekst, 0, pzc-tekst); strcat(bufer, temp); strcat(bufer, novo); start_ostatak = (pzc+duz_staro)-tekst; duz_ostatak = duz_tekst - start_ostatak; temp = strext(tekst, start_ostatak, duz_ostatak); strcat(bufer,temp); strcpy(tekst,bufer); strcpy(bufer,prazno); goto RAD; } else if ( pzc==NULL) { printf("\n\n\n\n TRAZENI STRING NIJE PRONADJEN"); getch(); } clrscr(); printf("\nORIGINAL:\n%s", rezerva); printf("\n\nIZMIJENJENI DOKUMENT:"); printf("\n%s", tekst); getch(); while(izbor!='d' && izbor!='D' && izbor!='n' && izbor!='N') { clrscr(); printf("\n\n\t\t DA LI ZELITE DA PONOVITE TRAZENJE I ZAMJENU (D/N): "); izbor=getch(); } } } char *strext(char *niz, int start, int duzina) { char *novo; int i, j; for (i=0, j=start; i