Go to diff to previous submission
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> char* buffer; char pattern[1024]; int blength; int plength; int i, n; int replace() { char* start; char* found; int offset; int j; offset = 0; start = buffer; do { if (found) { blength -= plength; start = found - plength; if (start < buffer) { start = buffer; } } }while(found); return 0; } int main(int argc, char *argv[]) { { for (i = 0; i < n; i++) { replace(); } } return 0; }
--- 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; }