📄 cfanalysist.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void MakeStrSpace(char str[50])
{
int i;
for(i = 0;i<50;i++){
str[i]='';
}
}
int main(void)
{
char *KeyWords[9] = {
"int","if","do","while","break","return","continue",
"for","printf"
};
char ch;
char str[50],*filename;
FILE *fp;
int i,j=0;
int k=0;
int m;
printf("Enter <filename>:");
scanf("%s",filename);
if((fp = fopen(filename,"r")) == NULL){
printf("Cannot Open File:<%s>",filename);
getch();
exit(1);
}
ch = getc(fp);
while(ch!=EOF){
while(isspace(ch)&&ch != EOF){
ch = getc(fp);
}
if(isdigit(ch)&&ch != EOF){
while(isdigit(ch)&&ch != EOF){
str[j++] = ch;
ch = getc(fp);
}
printf("(3,%s)\n",str);
MakeStrSpace(str);
j=0;
}
while(isspace(ch)&&ch != EOF){
ch = getc(fp);
}
if(ch == '\"'&&ch != EOF){
str[j++]=ch;
ch = getc(fp);
/*while(ch!='\"'&&ch!=EOF){
str[j++]=ch;
ch=getc(fp);
}*/
/*str[j] = '"';*/
if(ch=='\"'){
ch=getc(fp);
}
printf("(6,%s)\n",str);
MakeStrSpace(str);
j=0;
}
while(isspace(ch)&&ch != EOF){
ch = getc(fp);
}
switch(ch)
{
case '+':
printf("(4,+)\n");
ch = getc(fp);
break;
case '-':
printf("(4,-)\n");
ch = getc(fp);
break;
case '*':
printf("(4,*)\n");
ch = getc(fp);
break;
case '/':
printf("(4,/)\n");
ch = getc(fp);
break;
case '{':
printf("(5,{)\n");
ch = getc(fp);
break;
case '}':
printf("(5,})\n");
ch = getc(fp);
break;
case '(':
printf("(5,()\n");
ch = getc(fp);
break;
case ')':
printf("(5,))\n");
ch = getc(fp);
break;
case ',':
printf("(5,,)\n");
ch = getc(fp);
break;
case ';':
printf("(5,;)\n");
ch = getc(fp);
break;
case '=':
ch = getc(fp);
if(ch == '='){
printf("(4,==)\n");
ch = getc(fp);
}
else{
printf("(4,=)\n");
ch = getc(fp);
}
break;
case '>':
ch = getc(fp);
if(ch == '='){
printf("(4,>=)\n");
ch = getc(fp);
}
else{
printf("(4,>)\n");
ch = getc(fp);
}
break;
case '<':
ch = getc(fp);
if(ch == '='){
printf("(4,<=)\n");
ch = getc(fp);
}
else{
printf("(4,<)");
ch = getc(fp);
}
break;
case '!':
ch=getc(fp);
if(ch=='=')
{printf("(4,!=)\n");
ch=getc(fp);
}
else {printf("error!\n");
ch=getc(fp);
}
break;
default:
if(ch !=EOF){
str[j++] = ch;
ch = getc(fp);
while(ch !=' '&&ch != EOF){
str[j++] = ch;
ch = getc(fp);
}
for(i = 0;i < 9;i++){
if(!strcmp(str,KeyWords[i])){
printf("(1,%s)\n",str);
k = 1;
break;
}
}
if(k ==1){
k =0;
}
else{
printf("(2,%s)\n",str);
}
getch();
MakeStrSpace(str);
j=0;
}
break;
}
}
fclose(fp);
getch();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -