Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. void prosiri_string(char* p, int delta){
  6. char* kraj = p;
  7. while (*kraj != '\0') kraj++;
  8. while (kraj >= p) {
  9. *(kraj + delta) = *kraj;
  10. kraj--;
  11. }
  12. }
  13.  
  14. void skrati_string(char* p, int delta){
  15. char* q = p;
  16. while (*q != '\0') {
  17. *(q-delta) = *q;
  18. q++;
  19. }
  20. *(q-delta) = *q;
  21. }
  22.  
  23. char* zamijeni_tekst(char* str, const char *sta, const char *sa_cim, int cs){
  24.  
  25. char* p = str;
  26. int duzina_sta = strlen(sta) - 1; //bez \0
  27. int duzina_sa_cim = strlen(sa_cim) - 1;
  28.  
  29. while (*p != '\0') {
  30.  
  31. //trazenje teksta sta u tekstu str
  32. char* a = p;
  33. const char* b = sta;
  34.  
  35. while ((cs == 1 && *a++ == *b++) || (cs == 0 && toupper(*a++) == toupper(*b++))) {
  36. if(*b == '\0'){
  37. //printf("a : %c, p: %c ", *a, *p); //da se uvjerimo gdje se nalazi a, a gdje p
  38. //pronadjen tekst sta u tekstu str
  39.  
  40. if(duzina_sa_cim > duzina_sta){
  41. prosiri_string(a, duzina_sa_cim - duzina_sta); //a se nalazi iza kraja rijeci koje treba zamijeniti znaci od tog mjesta se
  42. //treba prosiriti, i tako i za skracivanje
  43. //ova funkcija ce prosiriti string pocevsi od mjesta na koje pokazuje a za delta mjesta
  44. }
  45.  
  46. if(duzina_sta > duzina_sa_cim){
  47. skrati_string(a, duzina_sta - duzina_sa_cim);
  48. }
  49.  
  50. const char* c = sa_cim;
  51. a = p;
  52. while (*c != '\0') *a++ = *c++;
  53. break;
  54.  
  55. //upisivanje teksta sa_cim na mjesto teksta sta u tekstu str
  56. //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.
  57. //ali se string str prekine kod prvog \0 iako iza toga ima jos teksta
  58. }
  59. }
  60. p++;
  61. }
  62.  
  63. return str;
  64. }
  65.  
  66.  
  67. int main(){
  68.  
  69. char tekst[100] = " Zeko pije caj. Pije Caj mali zeko!";
  70. zamijeni_tekst(tekst, "caj", "abc", 0);
  71. printf ("'%s'\n", tekst);
  72.  
  73. char tekst1[100] = " Zeko pije caj. Pije Caj mali zeko!";
  74. zamijeni_tekst(tekst1, "caj", "mlijeko", 0);
  75. printf ("'%s'\n", tekst1);
  76.  
  77. char tekst2[100] = " Zeko pije mlijeko. Pije Mlijeko mali zeko!";
  78. zamijeni_tekst(tekst2, "mlijeko", "caj", 0);
  79. printf ("'%s'\n", tekst2);
  80.  
  81. //probati i sa 1 da se vidi da se rijec Caj nece zamijeniti sa mlijeko jer se ne podudara sa caj...
  82. //ovo se dobilo u onom while-u sa dva uslova za cs 0 i 1
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement