Source code for submission s763

Go to diff to previous submission

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. char* buffer;
  7. char pattern[1024];
  8.  
  9. int blength;
  10. int plength;
  11.  
  12. int i, n;
  13.  
  14. int replace()
  15. {
  16. char* start;
  17. char* found;
  18. int offset;
  19.  
  20. int j;
  21.  
  22. offset = 0;
  23.  
  24. start = buffer;
  25.  
  26. do
  27. {
  28. found = strstr(start, pattern);
  29.  
  30. if (found)
  31. {
  32. memmove(found, found + plength, 2000020);
  33.  
  34. blength -= plength;
  35.  
  36. start = found - plength;
  37. if (start < buffer)
  38. {
  39. start = buffer;
  40. }
  41. }
  42. }while(found);
  43.  
  44. printf("%s", buffer);
  45.  
  46. return 0;
  47. }
  48.  
  49. int main(int argc, char *argv[])
  50. {
  51. buffer = (char*)(malloc(4000020));
  52. while (scanf("%d %s", &n, pattern) == 2)
  53. {
  54. plength = strlen(pattern);
  55. gets(buffer); /* sezereme konec radky */
  56. blength = strlen(buffer);
  57.  
  58. for (i = 0; i < n; i++)
  59. {
  60. fgets(buffer, 2000010, stdin);
  61. replace();
  62. }
  63. }
  64. free(buffer);
  65. return 0;
  66. }
  67.  

Diff to submission s708

main.c

--- c4.s708.cteam116.bugs.c.0.main.c
+++ c4.s763.cteam116.bugs.c.0.main.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <string.h>
+#include <math.h>
 
-char buffer[2002000]; 
+char* buffer; 
 char pattern[1024];
 
@@ -17,4 +18,6 @@
     int offset;
     
+    int j;
+    
     offset = 0;
     
@@ -27,6 +30,8 @@
       if (found)
       {
-        *found = 0;                
-        strcpy(found, found + plength);
+        memmove(found, found + plength, 2000020);
+        
+        blength -= plength;
+                    
         start = found - plength;
         if (start < buffer)
@@ -44,4 +49,5 @@
 int main(int argc, char *argv[])
 {
+  buffer = (char*)(malloc(4000020));
   while (scanf("%d %s", &n, pattern) == 2)
   {        
@@ -56,4 +62,5 @@
         }        
   }
+  free(buffer);
   return 0;
 }