任意文件内汉字或英文信息的显示 江西 黄焕如 1993-03-19 笔者利用Turbo C 2.00编制了一个小程序XS.C,经过编译和链接成EXE文件,可在DOS下直接执行,能显示任何文件内的汉字或英文信息。执行该程序时必须带两个参数,第一个参数是文件名,第二个参数是汉字或英文字符长度。 例如某用户希望查阅压缩软件LHARC内信息: C>XS LHARC.EXE 10 如果觉得显示的信息太细,可加大第二个参数的数值。一般说来,第二个参数数值愈大,显示的信息就愈少。如果利用DOS的重定向技术,还能将信息存入文件或打印输出,如: C>XS LHARC.EXE 20>(文件名)或(PRN) 该程序的设计原理是:打开需要显示汉字或英文的文件后,读入字符并且判断该字符是否是可显示字符(0x20和0x7e之间)或者是汉字(大于0xal),然后存入数组str内,再根据第二个参数来确定是否在屏幕上显示该字符串信息。 /*XS<文件名>*/ /*使用方法:c>XS<文件名>字符长度*/ #include"stdio.h" #include"ctype.h" #include"stdlib.h" main (argc,argv) intargc;char*argv[]; {file*fp; char*str;int i,j,k; if(argc!=3){ printf("usage:c>xs<filename><parameter>\n"); exit(1);} if((fp=fopen(argv[1],"rb"))=null{ printf("can'topenfile\n");exit(1);} while(!feof(fp)){ k=getc(fp);/*读一字符*/ i=0; /*是否可打印字符或汉字*/ if(isprint(k)||k>0xal){ do{ /*将字符装入字符数组*/ str[i]=k; i++; k=getc(fp);} while((isprint(k)||k>0xal)&&!feof(fp)); } /*是否字符串长度超过argv[2]个*/ if(i>=atoi(argv[2])){ for(j=0;j<i;j++)printf("%c",str[j]); printf("\n");} } fclose(fp); exit(1); }(江西 黄焕如)