C语言统计关键字的个数的程序
来源:互联网 发布:java教程 菜鸟教程下载 编辑:程序博客网 时间:2024/05/17 23:07
//#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXWORD 100 //关键字最大的个数
struct key //结构体数组,关键字按顺序排列
{
char *word;
int count;
} keytab[] = {
"auto", 0,
"break", 0,
"case", 0,
"char", 0,
"const", 0,
"continue", 0,
"default", 0,
/* ... */
"unsigned", 0,
"void", 0,
"volatile", 0,
"while", 0
};
//关键字的个数等于数组的长度除以单个元素的长度
#define NKEYS (sizeof keytab / sizeof(struct key))
int getword(char *, int); //从输入中读取下一个字符或单词
int binsearch(char *, struct key *, int); //在tab[0]到tab[n-1]中查找单词
int main(void)
{
int n;
char word[MAXWORD];
while(getword(word, MAXWORD) != EOF)
{
if (isalpha(word[0])) //word的第一个单词为字母
if ((n = binsearch(word, keytab, NKEYS)) >= 0)
keytab[n].count++; //在结构体中查找成功,关键字计数加1
}
//统计结束,打印结果
for (n = 0; n < NKEYS; n++)
{
if (keytab[n].count > 0)
printf("%4d %s\n",keytab[n].count, keytab[n].word);
}
return 0;
}
/* binsearch: find word in tab[0]...tab[n-1] */
//折半查找
int binsearch(char *word, struct key tab[], int n)
{
int cond;
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high)
{
mid = (low+high) / 2;
if ((cond = strcmp(word, tab[mid].word)) < 0)
high = mid - 1;
else if (cond > 0)
low = mid + 1;
else
return mid;
}
return -1;
}
/*getword从输入中读取下一个单词是以字母开头的字母和数字串,
也可以是以字母开头的字母和数字串,也可以是一个非空白字符串。
函数返回值可能是单词的第一个字符、文件结束符EOF或字符本身(如果该字符不是字母字符本身)*/
int getword(char *word, int lim)
{
int c, getch(void);
void ungetch(int);
char *w = word;
while (isspace(c = getch())) //c跳过空白符
;
if (c != EOF)
*w++ = c;
if (!isalpha(c)) //c不是字母
{
*w = '\0';
return c;
}
for ( ; --lim > 0; w++)
{
if (!isalnum(*w = getch())) //输入不是字母或数字时,该单词结束
{
ungetch(*w);
break;
}
}
*w = '\0'; //字符串结束符'\0'
return word[0]; //返回值是单词的第一个字符
}
#define BUFSIZE 100 //缓冲区的大小
char buf[BUFSIZE]; //用于ungetchar函数的缓冲区
int bufp = 0; //buf中下一个空闲位置
//读取一个字符(可能是压回的字符)
int getch(void)
{
return (bufp > 0) ? buf[--bufp] : getchar();
}
//把字符压回到输入中
void ungetch(int c)
{
if (bufp >= BUFSIZE)
printf("ungetch: too many characters\n");
else
buf[bufp++] = c;
}
- C语言统计关键字的个数的程序
- C语言统计源文件关键字的个数
- 一个用来统计c语言关键字出现次数的程序
- C语言统计输入的单词个数
- C语言:统计各种字符的个数
- 一个用于统计输入中各个C语言关键字出现次数的程序
- C语言编程:统计输入的各字符的个数
- C语言,统计输入的字符各类的个数
- C语言 统计整数二进制表示中1的个数
- c语言 统计整数二进制表示中1的个数
- 【C语言助教】统计文本中单词的个数!
- 用C语言统计给定文本文件中汉字的个数
- C语言 统计整数二进制表示中1的个数
- C语言统计一个字符串中单词的个数
- 用c语言统计文件中某个汉字的个数
- C语言-统计一行句子中单词的个数
- 【c语言】统计一个数二进制中的1的个数
- 【C语言】统计一个数二进制中1的个数
- java图片文字水印、图片水印、缩放、补白处理
- ubuntu下安装gnuplot
- js获取汉字拼音首字母
- 分类器-程序库 网站
- 常用的PL/SQL开发原则 by dbsanke
- C语言统计关键字的个数的程序
- 重建控制文件后某些文件被命名为MISSINGnnnnn
- Oracle 监听(Listener) 中 services 说明
- 推荐一个不错的学习娱乐一起的网站
- Oracle 10.2.0.4 高负载 触发 ORA-00494 错误
- 在oracle中导入导出dmp数据库文件
- 程序员收入报告
- DataGridView中的数据格式失效和排序异常
- cPanel邮件转发,不在本地留备份