#define __NO_STRING_INLINES #include #include #include char s1[] = "abcdefghijklmnopqrstuvwxyz"; void test (char *s1, int i, int test, int len) { char s2[2 * len + 1]; int j, k; for (k = i; k <= len + 1; k++) for (j = 0; j < len; j++) { memcpy (s2 + j, s1, len + 1); s2[i+j] += test; assert (memcmp (s2 + j, s1, k) == (k != i ? test : 0)); } } main() { int len = strlen(s1); int i, h; for (h = 0; h < len; h += 5) for (i = h; i < len; i++) { test (s1 + h, i - h, -1, len); test (s1 + h, i - h, 0, len); test (s1 + h, i - h, 1, len); } exit (0); }