📄 cifa001.cpp
字号:
#include<string.h>
#include<stdio.h>
#include<process.h>
const int max=40;
void main()
{
FILE *in,*out;
string chars[max];
char c;
if(in==fopen("e:\\test.txt","r"))//访问原文件
{
printf("cannot find the file!!\n");
exit(0);
}
if(out==fopen("e:\\output.txt","w"))//生成目标文件
{
printf("cannot create the file\n");
exit(1);
}
int k,i;
c=fgetc(in);
while(c!="@")
{
//////////////////////////////////////////////////////////////////
////////////////// 常数编码
/*if((c>='a'&&c<='z')||(c>='A'&&c<='Z')
||(cr>='0'&&c<='9')||c=='('||c==')'
||c=='{'||c=='}'||c=='>'||c=='<'
||c==';'||c==':'||c=='+'||c=='-'
||c=='*'||c=='/'||c=='='||c=='!'
||c=='&'||(k=c)=='\n'||c==' '||c=='['||c==']')*/
// {
i=0;
chars[i++]=c;
// }
}
}
char F1(FILE *in,FILE *out,char *chars,char c)//常量
{
char ch;
if(c>='0'&&c<='9')
{
chars[i++]=c;
ch=c;
c=fgetc(in);
}
while(c>='0'&&c<='9')
{
chars[i++]=c;
ch=c;
c=fgetc(in);
}
if(c=='.')
{
chars[i++]=c;
ch=c;
c=fgetc(in);
while(c>='0'&&c<='9')
{
chars[i++]=c;
ch=c;
c=fgetc(in);
}
}
else
{
chars[i++]='\0';
fprintf(out,"%s%d,%c%s%c%s\n","(",2,'"',chars,'"',")");
}
return ch;
}
void F2(FILE *in,FILE *out,char *chars,char c)//标识符和关键字
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
{
i=0;
chars[i++]=c;
while(c>='a'&&c<='z'||c>='A'&&c<='Z')
||c>='0'&&c<='9'||c=="_")
{
chars[i++]=c;
c=fgetc(in);
}
chars[i++]='\0';
if(strcmp(chars,"Auto")==0)
fprintf(out,"%s%d,%c%s%c%s","<",10,"",chars,"",">");
else if(strcmp(chars,"Double")==0)
fprintf(out,"%s%d,%c%s%c%s","<",11,"",chars,"",">");
else if(strcmp(chars,"Int")==0)
fprintf(out,"%s%d,%c%s%c%s","<",12,"",chars,"",">");
else if(strcmp(chars,"Struct")==0)
fprintf(out,"%s%d,%c%s%c%s","<",13,"",chars,"",">");
else if(strcmp(chars,"Break")==0)
fprintf(out,"%s%d,%c%s%c%s","<",14,"",chars,"",">");
else if(strcmp(chars,"Else")==0)
fprintf(out,"%s%d,%c%s%c%s","<",15,"",chars,"",">");
else if(strcmp(chars,"Long")==0)
fprintf(out,"%s%d,%c%s%c%s","<",16,"",chars,"",">");
else if(strcmp(chars,"Switch")==0)
fprintf(out,"%s%d,%c%s%c%s","<",17,"",chars,"",">");
else if(strcmp(chars,"Case")==0)
fprintf(out,"%s%d,%c%s%c%s","<",18,"",chars,"",">");
else if(strcmp(chars,"Enum")==0)
fprintf(out,"%s%d,%c%s%c%s","<",19,"",chars,"",">");
else if(strcmp(chars,"Register")==0)
fprintf(out,"%s%d,%c%s%c%s","<",20,"",chars,"",">");
else if(strcmp(chars,"Typedef")==0)
fprintf(out,"%s%d,%c%s%c%s","<",21,"",chars,"",">");
else if(strcmp(chars,"Char")==0)
fprintf(out,"%s%d,%c%s%c%s","<",22,"",chars,"",">");
else if(strcmp(chars,"Extern")==0)
fprintf(out,"%s%d,%c%s%c%s","<",23,"",chars,"",">");
else if(strcmp(chars,"Return")==0)
fprintf(out,"%s%d,%c%s%c%s","<",24,"",chars,"",">");
else if(strcmp(chars,"Union")==0)
fprintf(out,"%s%d,%c%s%c%s","<",25,"",chars,"",">");
else if(strcmp(chars,"Const")==0)
fprintf(out,"%s%d,%c%s%c%s","<",26,"",chars,"",">");
else if(strcmp(chars,"Float")==0)
fprintf(out,"%s%d,%c%s%c%s","<",27,"",chars,"",">");
else if(strcmp(chars,"Short")==0)
fprintf(out,"%s%d,%c%s%c%s","<",28,"",chars,"",">");
else if(strcmp(chars,"Unsigned")==0)
fprintf(out,"%s%d,%c%s%c%s","<",29,"",chars,"",">");
else if(strcmp(chars,"Continue")==0)
fprintf(out,"%s%d,%c%s%c%s","<",30,"",chars,"",">");
else if(strcmp(chars,"For")==0)
fprintf(out,"%s%d,%c%s%c%s","<",31,"",chars,"",">");
else if(strcmp(chars,"Signed")==0)
fprintf(out,"%s%d,%c%s%c%s","<",32,"",chars,"",">");
else if(strcmp(chars,"Void")==0)
fprintf(out,"%s%d,%c%s%c%s","<",33,"",chars,"",">");
else if(strcmp(chars,"Default")==0)
fprintf(out,"%s%d,%c%s%c%s","<",34,"",chars,"",">");
else if(strcmp(chars,"Goto")==0)
fprintf(out,"%s%d,%c%s%c%s","<",35,"",chars,"",">");
else if(strcmp(chars,"Sizeof")==0)
fprintf(out,"%s%d,%c%s%c%s","<",36,"",chars,"",">");
else if(strcmp(chars,"Volatile")==0)
fprintf(out,"%s%d,%c%s%c%s","<",37,"",chars,"",">");
else if(strcmp(chars,"Do")==0)
fprintf(out,"%s%d,%c%s%c%s","<",38,"",chars,"",">");
else if(strcmp(chars,"If")==0)
fprintf(out,"%s%d,%c%s%c%s","<",39,"",chars,"",">");
else if(strcmp(chars,"While")==0)
fprintf(out,"%s%d,%c%s%c%s","<",40,"",chars,"",">");
else if(strcmp(chars,"Static")==0)
fprintf(out,"%s%d,%c%s%c%s","<",41,"",chars,"",">");
else if(strcmp(chars,"define")==0)
{
c=jumpping(in,c);
fprintf(out,"%s%d,%c%s%c%s","<",41,"",chars,"",">");
}
else fprintf(out,"%s%d,%c%s%c%s","<",1,"",chars,"",">");
// chars[i++]='\0';
// fprintf(out,"%s%d,%c%s%c%s\n","(",1,'"',chars,'"',")");
}
}
char F2(FILE *in,FILE *out,char *chars,char c)//运算符
{
char ch;
if(c=='='||c=='+'||c=='*'||
c=='-'||c=='/'||c=='%'||
c=='<'||c=='>'||c==/*'&'*/||
c=='^'||c=='|'||c=='!'||
c=='?'||c=='.')
{
i=0;chars[i++]=c;
ch=c;
c=fgetc(in);
while(c=='='||c=='+'||c=='*'||
c=='-'||c=='/'||c=='%'||
c=='<'||c=='>'||/*c=='&'*/||
c=='^'||c=='|'||c=='!'||
c=='?'||c=='.')
{
chars[i++]=c;
ch=c;
c=fgetc(in);
}
chars[i++]='\0';
else if(strcmp(chars,"=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",101,"",chars,"",">");
else if(strcmp(chars,"+=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",102,"",chars,"",">");
else if(strcmp(chars,"*=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",103,"",chars,"",">");
else if(strcmp(chars,"-=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",104,"",chars,"",">");
else if(strcmp(chars,"/=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",105,"",chars,"",">");
else if(strcmp(chars,"%=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",106,"",chars,"",">");
else if(strcmp(chars,"<<=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",107,"",chars,"",">");
else if(strcmp(chars,">>=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",108,"",chars,"",">");
else if(strcmp(chars,"&=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",109,"",chars,"",">");
else if(strcmp(chars,"^=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",110,"",chars,"",">");
else if(strcmp(chars,"|=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",111,"",chars,"",">");
else if(strcmp(chars,"+")==0)
fprintf(out,"%s%d,%c%s%c%s","<",112,"",chars,"",">");
else if(strcmp(chars,"-")==0)
fprintf(out,"%s%d,%c%s%c%s","<",113,"",chars,"",">");
else if(strcmp(chars,"*")==0)
fprintf(out,"%s%d,%c%s%c%s","<",114,"",chars,"",">");
else if(strcmp(chars,"/")==0)
fprintf(out,"%s%d,%c%s%c%s","<",115,"",chars,"",">");
else if(strcmp(chars,"%")==0)
fprintf(out,"%s%d,%c%s%c%s","<",116,"",chars,"",">");
else if(strcmp(chars,"++")==0)
fprintf(out,"%s%d,%c%s%c%s","<",117,"",chars,"",">");
else if(strcmp(chars,"--")==0)
fprintf(out,"%s%d,%c%s%c%s","<",118,"",chars,"",">");
else if(strcmp(chars,">")==0)
fprintf(out,"%s%d,%c%s%c%s","<",119,"",chars,"",">");
else if(strcmp(chars,">=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",120,"",chars,"",">");
else if(strcmp(chars,"<")==0)
fprintf(out,"%s%d,%c%s%c%s","<",121,"",chars,"",">");
else if(strcmp(chars,"<=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",122,"",chars,"",">");
else if(strcmp(chars,"==")==0)
fprintf(out,"%s%d,%c%s%c%s","<",123,"",chars,"",">");
else if(strcmp(chars,"!=")==0)
fprintf(out,"%s%d,%c%s%c%s","<",124,"",chars,"",">");
// else if(strcmp(chars,"&&")==0)
// fprintf(out,"%s%d,%c%s%c%s","<",125,"",chars,"",">");
// else if(strcmp(chars,"&")==0)
// fprintf(out,"%s%d,%c%s%c%s","<",126,"",chars,"",">");
else if(strcmp(chars,"|")==0)
fprintf(out,"%s%d,%c%s%c%s","<",127,"",chars,"",">");
else if(strcmp(chars,"||")==0)
fprintf(out,"%s%d,%c%s%c%s","<",128,"",chars,"",">");
else if(strcmp(chars,"!")==0)
fprintf(out,"%s%d,%c%s%c%s","<",129,"",chars,"",">");
else if(strcmp(chars,"?")==0)
fprintf(out,"%s%d,%c%s%c%s","<",130,"",chars,"",">");
else
fprintf(out,"%s%d,%c%s%c%s","<",131,"",chars,"",">");
}
return ch;
}
char F3(FILE *in,FILE *out,char *chars,char c)//分隔符
{
char ch;
if(c==','||c==';'||c='(||
c==')'||c=='['||c==']'||
c=='{'||c=='}'||c=='#'||
c=='&')
{
i=0;chars[i++]=c;
ch=c;
c=fgetc(in);
chars[i++]='\0';
else if(strcmp(chars,",")==0)
fprintf(out,"%s%d,%c%s%c%s","<",200,"",chars,"",">");
else if(strcmp(chars,";")==0)
fprintf(out,"%s%d,%c%s%c%s","<",201,"",chars,"",">");
else if(strcmp(chars,"(")==0)
fprintf(out,"%s%d,%c%s%c%s","<",202,"",chars,"",">");
else if(strcmp(chars,")")==0)
fprintf(out,"%s%d,%c%s%c%s","<",203,"",chars,"",">");
else if(strcmp(chars,"[")==0)
fprintf(out,"%s%d,%c%s%c%s","<",204,"",chars,"",">");
else if(strcmp(chars,"]")==0)
fprintf(out,"%s%d,%c%s%c%s","<",205,"",chars,"",">");
else if(strcmp(chars,"{")==0)
fprintf(out,"%s%d,%c%s%c%s","<",206,"",chars,"",">");
else if(strcmp(chars,"}")==0)
fprintf(out,"%s%d,%c%s%c%s","<",207,"",chars,"",">");
else if(strcmp(chars,"#")==0)
fprintf(out,"%s%d,%c%s%c%s","<",208,"",chars,"",">");
// else if(strcmp(chars,"&")==0)
// fprintf(out,"%s%d,%c%s%c%s","<",209,"",chars,"",">");
}
return ch;
}
void F3(FILE *in,FILE *out,char *chars,char c)//判断&符号的编码
{
if(c=='&')
{
char d;
i=0;
chars[i++]=c;
if((d=fgetc(in))=='&')
{
chars[i++]=d;
chars[i++]='\0';
fprintf(out,"%s%d,%c%s%c%s","<",125,"",chars,"",">");
}
else
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -