📄 cifa.c
字号:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#define N 50
#define M 500
char *a[8]={"if","int","for","while","do","return","break","continue"};
char *b[9]={"/","+","-","*","<","=","<=","!="," "};
char *c[6]={"{","}","(",")",",",";"};
char scmp(char *str) /*此函数判断单词类型*/
{
int i;
for(i=0;i<8;i++)
{
if(strcmp(str,a[i])==0)
return '1';
}
if(isdigit(str[0]))
return '3';
for(i=0;i<9;i++)
{
if(strcmp(str,b[i])==0)
return '4';
}
for(i=0;i<6;i++)
{
if(strcmp(str,c[i])==0)
return '5';
}
if(!isalnum(str[0]))
return '5';
else return '2';
}
void main(void)
{
FILE *in,*out,*fp;
char ch,cha,buffer[N],*zhou[M];
int i=0,j=0,k;
if((in=fopen("daizj.txt","r+"))==NULL)
{
printf("yxcinput.txt can't open or doesn't exist...\n");
getch();
exit(0);
}
if((out=fopen("output.txt","w+"))==NULL)
{
printf("output file can not open...\n");
getch();
exit(0);
}
while(!feof(in))
{
ch=fgetc(in);
if(isalpha(ch)) /*如果首字符是字母*/
{
while(isalnum(ch)&&(i<N))
{
buffer[i++]=ch;
ch=fgetc(in);
}
if(i>=N)
{
printf("the string is too long...\n");
getch();exit(0);
}
buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*(strlen(buffer)+1));
strcpy(zhou[j-1],buffer);
i=0;
fseek(in,-1L,1);
}
else if(isdigit(ch)) /*如果首字符是数字*/
{
while(isdigit(ch)&&(i<N))
{
buffer[i++]=ch;
ch=fgetc(in);
}
if(i>=N)
{
printf("the digit is too long...\n");
getch();exit(0);
}
buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*(strlen(buffer)+1));
strcpy(zhou[j-1],buffer);
i=0;
fseek(in,-1L,1);
}
else if(!isalnum(ch)) /*如果首字符既不是数字也不是字母的话*/
{
if(ch!='\n'&&ch!='')
{
if(ch=='<'||ch=='!') /* 以下代码实现超前搜索 */
{
if((cha=fgetc(in))=='=')
{
buffer[i++]=ch;
buffer[i++]=cha;buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*3);
strcpy(zhou[j-1],buffer);
i=0;
}
else
{
buffer[i++]=ch;buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*2);
strcpy(zhou[j-1],buffer);
i=0;
fseek(in,-1L,1);
}
}
else if(ch=='+'||ch=='-'||ch=='=')
{
if((cha=fgetc(in))==ch)
{
buffer[i++]=ch;buffer[i++]=cha;buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*3);
strcpy(zhou[j-1],buffer);
i=0;
}
else
{
buffer[i++]=ch;buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*2);
strcpy(zhou[j-1],buffer);
i=0;
fseek(in,-1L,1);
}
}
else
{
buffer[i++]=ch;buffer[i]='\0';
zhou[j++]=(char *)malloc(sizeof(char)*2);
strcpy(zhou[j-1],buffer);
i=0;
}
}
}
}
for(i=0;i<j-1;i++) /*输出到文件*/
{
puts(zhou[i]);
cha=scmp(zhou[i]);
fputc('(',out);
fputc(cha,out);
fputc(',',out);
fputs(zhou[i],out);
fputc(')',out);
fputc('\n',out);
}
getch();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -