📄 banner.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 + -