易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
C语言统计源文件关键字的个数
C语言统计源文件关键字的个数
#include <stdlib.h>
#include <stdio.h>
#define MAX_WORD 128;
#define MAX_LEN 100
typedef
struct
_Key{
char
* keyWord;
int
cout;
}KeyWord;
//初始化
KeyWord keyTab[]={
"auto",0,
"break",0,
"case",0,
"char",0,
"const",0,
"continue",0,
"default",0,
"define",0,
"unsigned",0,
"void",0,
"volatile",0,
"while",0
};
//获取长度
size_t
getLen(
void
)
{
return
(
sizeof
keyTab /
sizeof
keyTab[0]);
}
//打印
void
printKey(KeyWord key[],
size_t
len)
{
int
i;
for
(i=0;i<len;i++)
{
printf("%4d %s ",key[i].cout,key[i].keyWord);
}
}
//从文件中获取一个单词
int
getWord(
char
* word,
int
len,
FILE
* f){
char
* w = word;
int
c;
//跳过空格
while
(isspace(c=fgetc(f)))
;
if
(c!=EOF)
*w++ = c;
//不是字母
if
(!isalpha(c))
{
*w=" ";
return
c;
}
for
(;--len>0;w++)
{
if
(!isalnum(*w=fgetc(f)))
{
ungetc(*w,f);
break
;
}
}
*w = " ";
return
c;
}
//二分查找
int
binSearch(KeyWord k[],
char
* word,
int
len)
{
int
low,high,mid,pos;
low=0;
high=len-1;
while
(low<=high)
{
mid = (high+low)/2;
//如果word比key[mid].keyword小 下次循环在[low~mid-1]之间找
if
((pos=strcmp(word,k[mid].keyWord))<0)
{
high = mid-1;
}
else
if
(pos>0){
low = mid+1;
}
else
{
return
mid;
}
}
return
-1;
}
//FindKeyW.h
//main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "FindKeyW.h"
int
main(
int
argc,
char
*argv[])
{
extern
KeyWord keyTab[];
size_t
len = getLen();
FILE
* f;
if
(f=fopen("FindKeyW.h","r"))
{
char
word[MAX_LEN];
int
pos;
while
(getWord(word,MAX_LEN,f)!=EOF)
{
if
(isalpha(word[0]))
{
if
((pos=binSearch(keyTab,word,len))>0)
{
keyTab[pos].cout++;
}
}
}
fclose(f);
}
printKey(keyTab,len);
system("PAUSE");
return
0;
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图