📄 rlencode.c
字号:
/* Run-length encoding. Stolen from _Software Tools_ page 44. FIXME: check error return codes on I/O */#include <stdio.h>enum { MAXCHUNK = 255, RCODE = 0, THRESH = 5};static char buf[MAXCHUNK];static voidputbuf (FILE *out, int n){ if (n > 0) { putc (n, out); fwrite (buf, 1, n, out); }}static voidencode (FILE *out, FILE *in){ int c, lastc; int nrep, nsave; nsave = 0; for (lastc = getc (in); lastc != EOF; lastc = c) { for (nrep = 1; (c = getc (in)) == lastc; ++nrep) if (nrep >= MAXCHUNK) break; if (nrep < THRESH) for (; nrep > 0; --nrep) { buf[nsave++] = lastc; if (nsave >= MAXCHUNK) { putbuf (out, nsave); nsave = 0; } } else { putbuf (out, nsave); nsave = 0; putc (RCODE, out); putc (lastc, out); putc (nrep, out); } } putbuf (out, nsave);}int main (void){ encode (stdout, stdin); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -