Advertisement
Guest User

Untitled

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