?? c++分析.txt
字號:
#include <stdio.h>
#include<string.h>
#include<ctype.h>
#define BUFFMAXLEN 100
FILE *out;
char token[20],s[20],filename[25],outfile[25],ch;
char blank[33][10]={"auto","break","case","char","const","continue","default",
"do","double","else","enum","extern","float","for","goto",
"if","int","long","register","return","short","signed","sizeof",
"static","struct","switch","typedef","union","unsigned",
"void","volatile","while"};
void getbe()
{int readchar(char *ch);
while(isspace(ch))
ch=readchar(filename);
}
void concatenation(char ch)
{
strcat(token,&ch);
}
void error()
{
if(ch!=-1)
fputs("\nyour input a data ERROR!",out);
}
int reserve()
{int i,m=0;
for(i=0;i<=31;i++)
{ if(strcmp(token,blank[i])==0)m=1;
}return(m);
}
int readchar(char * filename)
{
static FILE *fp = NULL;
static char buff[BUFFMAXLEN];
static int bufflen = 0;
static int buffpos = -1;
if (fp == NULL)
{
if ((fp = fopen(filename,"r")) == NULL)
{
printf("File open error!\n");
return 0;
}
}
if (buffpos == -1)
{
if (feof(fp))
{
fclose(fp);
return -1;
}
bufflen = fread(buff,sizeof(char),BUFFMAXLEN,fp);
buffpos = 0;
}
if (buffpos < bufflen)
ch = buff[buffpos++];
if (buffpos >= bufflen)
buffpos = -1;
return ch;
}
void main()
{
int c,k=0;
char b=' ';
printf("\nPlease input filename:");
scanf("%s",filename);
printf("\nPlease input outfile name:");
scanf("%s",outfile);
if((out=fopen(outfile,"w"))==NULL)
{printf("\ncannot open outfile file!");
}
ch = b;
while(ch != -1 && ch != 0)
{ strcpy(token,s);
if(k==0)ch=readchar(filename);
else {ch=b;k=0;}
getbe();
if(isalpha(ch))
{while(isalnum(ch))
{
concatenation(ch);
b=ch=readchar(filename);k=1;
}
c=reserve();
if(c==1)fprintf(out,"\n< %s ,_ >",token);
else fprintf(out,"\n< ident ,\"%s\" >",token);
}
else
{if(isdigit(ch))
{while(isdigit(ch))
{
concatenation(ch);
b=ch=readchar(filename);k=1;
}
fprintf(out,"\n< const ,%s >",token); }
else
switch(ch)
{ case '+': b=ch=readchar(filename);
if(ch=='+')fputs("\n< ++ , _>",out);
else {fputs("\n< + ,_ >",out);k=1;}
break;
case '-': b=ch=readchar(filename);
if(ch=='-')fputs("\n< -- , EQ>",out);
else {fputs("\n< - ,_ >",out);k=1;}
break;
case '*': fputs("\n< * ,null >",out);break;
case '<': b=ch=readchar(filename);
if(ch=='=')fputs("\n< <= , LE>",out);
else {fputs("\n< < ,LT >",out);k=1;}
break;
case '=': b=ch=readchar(filename);
if(ch=='=')fputs("\n< == , EQ>",out);
else {fputs("\n< = ,_ >",out);k=1;}
break;
case '>': b=ch=readchar(filename);
if(ch=='=')fputs("\n< >= ,RE >",out);
else {fputs("\n< > ,RT >",out);k=1;}
case '&': b=ch=readchar(filename);
if(ch=='&')fputs("\n< && , _>",out);
else {fputs("\n< & ,_ >",out);k=1;}
break;
case '|': b=ch=readchar(filename);
if(ch=='|')fputs("\n< ||, _>",out);
else {fputs("\n< | ,_ >",out);k=1;}
break;
case '!': b=ch=readchar(filename);
if(ch=='=')fputs("\n< != , _>",out);
else {fputs("\n< ! ,_ >",out);k=1;}
break;
case ':': fputs("\n< : ,_ >",out);break;
case ',': fputs("\n< , ,_ >",out);break;
case ';': fputs("\n< ; ,_ >",out);break;
case '(': fputs("\n< ( ,_ >",out);break;
case ')': fputs("\n< ) ,_ >",out);break;
case '{': fputs("\n< { ,_ >",out);break;
case '}': fputs("\n< } ,_ >",out);break;
case '[': fputs("\n< [ ,_ >",out);break;
case ']': fputs("\n< ] ,_ >",out);break;
case '"': fputs("\n< \",_ >",out);break;
case '#': fputs("\n< # ,_ >",out);break;
case '\\': fputs("\n< \\ ,_ >",out);break;
case '%': fputs("\n< % ,_ >",out);break;
case '.': fputs("\n< . ,_ >",out);break;
case '\'': fputs("\n< ' ,_ >",out);break;
case '?': fputs("\n< ? ,_ >",out);break;
case '^': fputs("\n< ^ ,_ >",out);break;
default:
error();
}
}
}
fclose(out);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -