Advertisement
Guest User

Untitled

a guest
May 21st, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_STRING_LENGHT 256
  4.  
  5. int numsub(char *str, char *sub)
  6. {
  7. int num = 0;
  8. char *ptrstr;
  9. char *ptrsub;
  10. while (*str)
  11. {
  12. if (*str == *sub)
  13. {
  14. int trigger = 1;
  15. ptrstr = str;
  16. ptrsub = sub;
  17. while (*ptrstr &&*ptrsub)
  18. {
  19. trigger = trigger && (*ptrstr == *ptrsub);
  20. ptrstr++;
  21. ptrsub++;
  22. }
  23. if (trigger)
  24. {
  25. num++;
  26. }
  27. }
  28. str++;
  29. }
  30. return num;
  31. }
  32.  
  33. char *strstr(char* str, char* sub)
  34. {
  35. char *ptrstr;
  36. char *ptrsub;
  37. while (*str)
  38. {
  39. if (*str == *sub)
  40. {
  41. int trigger = 1;
  42. ptrstr = str;
  43. ptrsub = sub;
  44. while (*ptrstr &&*ptrsub)
  45. {
  46. trigger = trigger && (*ptrstr == *ptrsub);
  47. ptrstr++;
  48. ptrsub++;
  49. }
  50. if (trigger)
  51. {
  52. return str;
  53. }
  54. }
  55. str++;
  56. }
  57. return NULL;
  58. }
  59.  
  60. int str_len(char *str)
  61. {
  62. int len = 0;
  63. while (*str)
  64. {
  65. len++;
  66. str++;
  67. }
  68. return len;
  69. }
  70.  
  71. char *str_ncpy(char *toHere, char *fromHere, int n)
  72. {
  73. char* buffer2 = (char*)malloc(MAX_STRING_LENGHT);
  74. int i;
  75. toHere = buffer2;
  76. if (n>str_len(fromHere))
  77. {
  78. n = str_len(fromHere);
  79. }
  80. for (i = 0; i<n; i++)
  81. {
  82. toHere[i] = fromHere[i];
  83. //printf("%c\n", toHere[i]);
  84. //printf("%d\n", i);
  85. }
  86. toHere[i] = '\0';
  87. return toHere;
  88. }
  89.  
  90. char *str_ncat(char *toHere, char *fromHere, int n)
  91. {
  92. int l = str_len(toHere), k, i;
  93. i=l;
  94. printf("i(1)=%d\n",i);
  95. for (i = l, k = 0; i<l + n; i++, k++)
  96. {
  97. //printf("%c\n", toHere[i]);
  98. toHere[i] = fromHere[k];
  99. //printf("%c\n",toHere[i]);
  100. }
  101. toHere[i] = '\0';
  102. return toHere;
  103. }
  104.  
  105. char* findandinsert(char* str, char* sub, char* rep)
  106. {
  107. int i, l;
  108. l = numsub(str, sub);
  109. char* buffer = (char*)malloc(MAX_STRING_LENGHT);
  110. char* buffer1 = (char*)malloc(MAX_STRING_LENGHT);
  111. char* buffer2 = (char*)malloc(MAX_STRING_LENGHT);
  112. buffer1 = str;
  113. buffer2 = str_ncpy(buffer2,buffer1,0);
  114. if (l == 0)
  115. {
  116. return str;
  117. }
  118. for (i = 0; i < l; i++)
  119. {
  120. buffer1 = str;
  121. printf("buffer1: %s\n", buffer1);
  122. buffer = str_ncpy(buffer, buffer1, str_len(str) - str_len(strstr(str, sub)));
  123. printf("buffer: %s\n", buffer);
  124. buffer = str_ncat(buffer, rep, str_len(rep));
  125. printf("buffer: %s\n", buffer);
  126. buffer2 = str_ncat(buffer2, buffer , str_len(buffer));
  127. printf("buffer2: %s\n", buffer2);
  128.  
  129. str = strstr(str, sub) + str_len(sub);
  130. printf("str: %s\n\n", str);
  131.  
  132.  
  133. }
  134. buffer2 = str_ncat(buffer2, str, str_len(str));
  135. return buffer2;
  136. }
  137.  
  138. int main()
  139. {
  140. int i, l;
  141. char* str = (char*)malloc(MAX_STRING_LENGHT);
  142. char* sub = (char*)malloc(MAX_STRING_LENGHT);
  143. char* rep = (char*)malloc(MAX_STRING_LENGHT);
  144. str = "aaaabcdebcfgbc";
  145. sub = "bc";
  146. rep = "9";
  147. l = numsub(str, sub);
  148. printf("INITIAL STR: %s\n", str);
  149. printf("SUBSTR: %s\n", sub);
  150. printf("REPSTR: %s\n\n", rep);
  151. printf("FINAL STR: %s\n", findandinsert(str, sub, rep));
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement