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

📄 banner.c

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 C
字号:
#define nchars 64	/*number of chars in char set*/#define nlines  6	/*number of lines in a banner character*/#define pposs  85	/*number of print positions on a line (must be multiple of 4)*/			/*followed by end of string character*/#define pospch 8	/*number of char positions per banner char*/#define chpln  10	/*number of banner characters per line*/struct bann{	  char alpha[nlines][pposs];};struct bann buffer,*bp buffer;char ctbl[nchars][nlines]{	036,041,046,051,046,035,	/*@*/	014,022,041,077,041,041,	/*A*/	076,041,076,041,041,076,	/*B*/	036,041,040,040,041,036,	/*C*/	076,041,041,041,041,076,	/*D*/	077,040,076,040,040,077,	/*E*/	077,040,076,040,040,040,	/*F*/	036,041,040,047,041,036,	/*G*/	041,041,077,041,041,041,	/*H*/	004,004,004,004,004,004,	/*I*/	001,001,001,001,041,036,	/*J*/	041,042,074,044,042,041,	/*K*/	040,040,040,040,040,077,	/*L*/	041,063,055,041,041,041,	/*M*/	041,061,051,045,043,041,	/*N*/	036,041,041,041,041,036,	/*O*/	076,041,041,076,040,040,	/*P*/	036,041,041,045,042,035,	/*Q*/	076,041,041,076,042,041,	/*R*/	036,040,036,001,041,036,	/*S*/	037,004,004,004,004,004,	/*T*/	041,041,041,041,041,036,	/*U*/	041,041,041,041,022,014,	/*V*/	041,041,041,055,063,041,	/*W*/	041,022,014,014,022,041,	/*X*/	021,012,004,004,004,004,	/*Y*/	077,002,004,010,020,077,	/*Z*/	016,010,010,010,010,016,	/*[*/	040,020,010,004,002,001,	/*\*/	034,004,004,004,004,034,	/*]*/	004,012,000,000,000,000,	/*^*/	000,000,000,000,000,077,	/*_*/	000,000,000,000,000,000,	/* */	010,010,010,010,000,010,	/*!*/	022,022,000,000,000,000,	/*"*/	022,077,022,022,077,022,	/*#*/	036,054,036,015,055,036,	/*$*/	001,062,064,013,023,040,	/*%*/	014,022,014,024,042,035,	/*&*/	010,010,000,000,000,000,	/*'*/	004,010,010,010,010,004,	/*(*/	010,004,004,004,004,010,	/*)*/	000,022,014,014,022,000	/***/};char blank ' ';char plot 'X';int msk 040;	/*mask at sixth bit*/main(argc,argp)char **argp;int argc;{	int i;	/*if invoked with no arguments, prints error comment;	  if invoked with an argument, prints it in banner form.	*/	if(argc<2){	  printf("missing argument\n");	  exit();	}	banner(argp[1],bp);	banprt(bp);}banner(s,bufp)char *s;struct bann *bufp;{	char c,*p,*q,*r;	p=s;	r=bufp;	banset(blank,bufp);	while((c= *s++)!=0){	  if((s-p)>chpln)return(s-p);	  if(c>='`')c =- ' ';	/*map lower to upper case*/	  if(c<' ')c='#';	  if(c>'?')c=- 0100;	  q=ctbl[c];	  banfil(q,r);	  r=+pospch;	}}banfil(c,p)char *c;struct bann *p;{	int i,j;	for(i=0;i<nlines;i++){	  for(j=0;j<pospch;j++){	    if(((c[i]<<j)&msk)!=0)p->alpha[i][j] = plot;	  }	}	return(0);}banset(c,p)char c;struct bann *p;{	int i,j;	for(i=0;i<nlines;i++)	  for(j=0;j<pposs-1;j++)	    p->alpha[i][j] = c;}banprt(ptr)struct bann *ptr;{	int i,j;	for(i=0;i<nlines;i++){	  ptr->alpha[i][pposs-1]='\0';	  for(j=pposs-2;j>=0;j--){	    if(ptr->alpha[i][j]!=blank)break;	    ptr->alpha[i][j]='\0';	  }	printf("%s\n",ptr->alpha[i]);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -