📄 1.c
字号:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#define N 50
#define M 500
char *a[32]={"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","while","volatile"};
char *b[13]={"&&","||","++","--","+","-","*","/","=",">=","<=","==","!="};
char *c[10]={"[","]","{","}","(",")",",",";","'"};
char scmp(char *str) /*此函数判断单词类型*/
{
int i;
for(i=0;i<32;i++)
{
if(strcmp(str,a[i])==0)
return '1';
}
if(isdigit(str[0]))
return '3';
for(i=0;i<13;i++)
{
if(strcmp(str,b[i])==0)
return '4';
}
for(i=0;i<10;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("source.txt","r+"))==NULL)
{
printf("source.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=='<'||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=='&'||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 + -