Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- void prosiri_string(char* p, int delta){
- char* kraj = p;
- while (*kraj != '\0') kraj++;
- while (kraj >= p) {
- *(kraj + delta) = *kraj;
- kraj--;
- }
- }
- void skrati_string(char* p, int delta){
- char* q = p;
- while (*q != '\0') {
- *(q-delta) = *q;
- q++;
- }
- *(q-delta) = *q;
- }
- char* zamijeni_tekst(char* str, const char *sta, const char *sa_cim, int cs){
- char* p = str;
- int duzina_sta = strlen(sta) - 1; //bez \0
- int duzina_sa_cim = strlen(sa_cim) - 1;
- while (*p != '\0') {
- //trazenje teksta sta u tekstu str
- char* a = p;
- const char* b = sta;
- while ((cs == 1 && *a++ == *b++) || (cs == 0 && toupper(*a++) == toupper(*b++))) {
- if(*b == '\0'){
- //printf("a : %c, p: %c ", *a, *p); //da se uvjerimo gdje se nalazi a, a gdje p
- //pronadjen tekst sta u tekstu str
- if(duzina_sa_cim > duzina_sta){
- prosiri_string(a, duzina_sa_cim - duzina_sta); //a se nalazi iza kraja rijeci koje treba zamijeniti znaci od tog mjesta se
- //treba prosiriti, i tako i za skracivanje
- //ova funkcija ce prosiriti string pocevsi od mjesta na koje pokazuje a za delta mjesta
- }
- if(duzina_sta > duzina_sa_cim){
- skrati_string(a, duzina_sta - duzina_sa_cim);
- }
- const char* c = sa_cim;
- a = p;
- while (*c != '\0') *a++ = *c++;
- break;
- //upisivanje teksta sa_cim na mjesto teksta sta u tekstu str
- //ne moze strcpy u nasem slucaju jer se prekopira i \0 od tesksta sa_cim i prekine nam nas tekst str bude: Zeko pije tri\0. Pije tri mali zeko\0.
- //ali se string str prekine kod prvog \0 iako iza toga ima jos teksta
- }
- }
- p++;
- }
- return str;
- }
- int main(){
- char tekst[100] = " Zeko pije caj. Pije Caj mali zeko!";
- zamijeni_tekst(tekst, "caj", "abc", 0);
- printf ("'%s'\n", tekst);
- char tekst1[100] = " Zeko pije caj. Pije Caj mali zeko!";
- zamijeni_tekst(tekst1, "caj", "mlijeko", 0);
- printf ("'%s'\n", tekst1);
- char tekst2[100] = " Zeko pije mlijeko. Pije Mlijeko mali zeko!";
- zamijeni_tekst(tekst2, "mlijeko", "caj", 0);
- printf ("'%s'\n", tekst2);
- //probati i sa 1 da se vidi da se rijec Caj nece zamijeniti sa mlijeko jer se ne podudara sa caj...
- //ovo se dobilo u onom while-u sa dva uslova za cs 0 i 1
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement