📄 4.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
char a[20];
int flag;//0表示空,1表示满
int num;
}hash_biao[41];
//--------------------------------------------------------------------------------------------------------------------------------
int hash(char a[])
{
char c0,c1;
int i;
i=1;
c0=a[0];
while(a[i]!='\0')
{
c1=a[i];
i++;
}
i=(c0*100+c1)%41;
return(i);
}
void creat_hash(hash_biao hash_biao)
{
char keyword[32][20]={"int","char","long","float","double","short","unsigned","struct","union","enum","auto","extern","static","register","void","typedef","goto","return","break","continue","if","else","default","do","while","for","switch","case","define","include","endif","sizeof"};
int j=0;
int i;
while(j<32)
{
i=hash(keyword[j]);
while(hash_biao[i].flag)
{
i=(i+1)%41;
}
strcpy(hash_biao[i].a,keyword[j]);
hash_biao[i].flag=1;
j++;
}
for(i=0;i<41;i++)
{
printf("%s ",hash_biao[i].a);
printf("%d\n",hash_biao[i].flag);
}
}
void getword(hash_biao hash_biao)
{
char s[30],b[20];
FILE *fp;
char c,d;
int i=0;
printf("输入文件名:");
scanf("%s",s);
fp=fopen(s,"r");
fscanf(fp,"%c",&c);
while(!feof(fp))
{
i=0;
if(c=='/')
{
fscanf(fp,"%c",&c);
if(c=='/')//行注释
{
fscanf(fp,"%c",&c);
while(c!=10)
{fscanf(fp,"%c",&c);}
fscanf(fp,"%c",&c);
}
else if(c=='*')//块注释
{
fscanf(fp,"%c",&c);
d=c;
fscanf(fp,"%c",&c);
while(d!='*'||c!='/')
{
d=c;
fscanf(fp,"%c",&c);
}
fscanf(fp,"%c",&c);
}
else fscanf(fp,"%c",&c);
}
else
{
while(c>=97&&c<=122)
{
b[i]=c;
fscanf(fp,"%c",&c);
i++;
}
b[i]='\0';
if(b[0]!='\0')
{
i=hash(b);
while(hash_biao[i].flag!=0)
{
if(strcmp(b,hash_biao[i].a)!=0)
{ i=(i+1)%41; }
else
{
hash_biao[i].num++;
break; }
}
}
fscanf(fp,"%c",&c);
}
}
}
void main()
{
hash_biao hash_biao;
int i;
for(i=0;i<41;i++)
{
hash_biao[i].flag=0;
hash_biao[i].num=0;
}
creat_hash(hash_biao);
getword(hash_biao);
for(i=0;i<41;i++)
{
if(hash_biao[i].num!=0&&hash_biao[i].flag!=0)
{
printf("%s ",hash_biao[i].a);
printf("%d\n",hash_biao[i].num);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -