- 126 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:18:52 ]
- >>120
#include <stdio.h> int main(int argc, char **argv) { char *queue; int c, qhead = 0, qtail = 0, qsize; if (argc < 3) return fprintf(stderr, "usage: %s from to\n", argv[0]), 1; qsize = strlen(argv[1]); queue = malloc(qsize); while ((c = getchar()) != EOF) { queue[qtail] = c; qtail = (qtail + 1) % qsize; if (qhead != qtail) continue; if (memcmp(&queue[qhead], argv[1], qsize - qhead) == 0 && memcmp(queue, argv[1] + qsize - qhead, qtail) == 0) { fputs(argv[2], stdout); qhead = qtail = 0; } else { putchar(queue[qhead]); qhead = (qhead + 1) % qsize; } } while (qhead != qtail) { putchar(queue[qhead]); qhead = (qhead + 1) % qsize; } free(queue); return 0; }
|

|