⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rlencode.c

📁 idel虚拟机源码
💻 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 + -