任意文件内汉字或英文信息的显示

Author: 江西 黄焕如 Date: 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);
        }(江西  黄焕如)