在DOS下查看WPS文件
/*文件名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);
}