微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题在DOS下查看WPS文件
栏目软件操作与技巧
作者贵州 王乜
发布1996-03-22
  要在DOS下查看WPS文件,必须解决下面几个问题:1.去掉长度为1024字节的WPS文件的文件头;2.过滤掉ASCII码0-19H中除回车、换行外的字符(如分页符);3.过滤掉ASCII码80H-0A0H之间的编码(WPS文件中的特殊控制符,如字体字号等各种排版编辑控制符);4.将软回车符换为硬回车。本程序用TURBO C 2.0编写,在386/DX40机,DOS 3.30下,486/DX66,DOS 6.22下通过,中文环境为UCDOS 3.1。程序清单如下,用法为:若要在DOS下查看WPS文件,键入TYPEWPS 文件名1即可;若要将WPS文件转换为文本文件键入TYPEWPS 文件名1 文件名2即可。其中,TYPEWPS为本文件名(读者也可另外命名),文件名1为欲查看的WPS文件,文件名2为转换为文本文件后的文件名。若只键入TYPEWPS,程序会自动提示正确的使用格式。
  /*文件名TYPEWPS.EXE*/
  #include<stdio.h>
  main(int argc,char *argv[])
  {
  FILE *fp1,*fp2;
  int ch,bh=0;
  if(argc==1)
  {
  printf("Usage:%s Infile [outfile]\n",argv[0]);
  /*若只有TYPEWPS则用中英文提示正确的使用格式*/
  printf("用法:%s 文件名1.后辍名 [文件名2.后辍名]\n",argv[0]);
  getch();
  exit(0);
  }
  if((fp1=fopen(argv[1],"rt"))==NULL)
  {
  printf("Cannot open %s\n",argv[1]);
  getch();
  exit(1);
  }
  if (argc==2)
  fp2=stdout;/*若只有文件名1.后辍名,在屏幕上显示*/
  else  /*若有文件名2.后辍名,则将文件名1.后辍名转换为文本文件*/
  if ((fp2=fopen(argv[2],"wt+"))==NULL)
  {
  printf("Cannot open %s\n",argv[2]);
  getch();
  exit(1);
  }
  fseek(fp1,1024L,0);/*去掉长度为1024字节的WPS文件的文件头*/
  while((ch=fgetc(fp1))!=EOF)
  {
  if((bh==0x8d)&&(ch==0x8a))/*滤掉软回车,换为硬回车*/
  fputc('\n',fp2);
  else
  {
  if ((ch<0x7f)||(ch>0xa0))/*滤掉特殊控制符*/
  {
  if ((ch==0x0d)||(ch==0x0a)||(ch>=0x20))/*滤掉ASCII码0-19H中除回车,换行外的字符*/
  fputc(ch,fp2);
  }
  bh=ch;
  }
  }
  fclose(fp1);
  fputc(ch,fp2);
  fclose(fp2);
  }