/** * :author: Dan Buch (daniel.buch@gmail.com) */ #include void duff(register char *to, register char *from, register int count) { register int n; int remainder = count % 8; if (remainder == 0) { n = (count + 7) / 8; do { *to++ = *from++; } while (--n > 0); } else if (remainder <= 7 && remainder > 0) { int i; int c; for (i = 0; (c = from[i] && c != EOF); i++) { to[i] = c; } } } int main() { char * to = "dogs cats babies"; char * from = "monkey hat pants"; int i = 11; printf("to = %s\n", to); printf("from = %s\n", from); /* And here comes the segfault... */ duff(to, from, i); printf("to = %s\n", to); printf("from = %s\n", from); } /* vim:filetype=c:fileencoding=utf-8 */