⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 本程序可以统计从键盘读入的一段代码中所包含的c语言关键字
💻 CPP
字号:
#include <stdio.h>
#include <ctype.h>
#include <string.h>        

enum {in = 1, out = 0};

int state = out,m=0;

int getident(int limit, char id[]) {
	int i,j,d;
    char c;

for (i=0;(c=getchar())!=EOF; ) {		
if (state = out){
   if ((c == '"')&&(m==0)){ 
		m=1;
		for( ; ;c=getchar()){
		  if ((c == '"')&&(m=1)){
			  m=0;
				  break;}}
	}
		if (isalpha(c)) {
			id[0]=c;
			i++;
			state = in;
			}
		if (!isspace(c)){
			i=0;
		}
    }
	if (state = in && i<=limit-1) { 

		
		
if (c == '/'){ 
	if ((d=getchar())== '/' ){
		for( ;c=getchar(); ){
		if (c=='\n')
			break;}
} 
	
	else if ((d=getchar())=='*'){
		for( ;; c=getchar()){
			if (c == '*'){ 
            if ((d=getchar())=='/')
				break;}}}
		}
		
		
else{	
	if (isalpha(c)||(c==';'))  {
			id[i] = c;
			i++;
			continue;
		}
		if (isspace(c)) {
		
			state = out; 
			return i;
		}
		else {
			while ((c=getchar())!=' '&&c!='\n');
			  for(j=0;j<10;j++) 
				  id[j]='\0'; 
			  state = out;
			  i=0;
	}
	}
	
if (i=limit) {
		if (isspace(c)) {
	        state = out;
			return i;}
		else { 
			while ((c=getchar())!=' '&&c!='\n');
			for (j=0;j<10;j++) 
				id[j]='\0'; 
			state = out;
			i=0;
			}
	}
}}
	return 0;
}

int main () {	
	char s[10],a1[]="break;",a2[]="continue;",
		keywords [32][9]={
		"auto","break","case","char",
		"const","continue","default","do",
		"double","else","enum","extern",
		"float","for","goto","if",
		"int","long","register","return",
		"short","size","sizeof","static",
		"struct","switch","typedef","union",
        "unsigned","void","volatile","while"};

int counters[32],i,n,j;
	
for (i=0;i<32;i++) 
	counters[i]=0;
for (i=0;i<10;i++)
     s[i]='\0';
		
while (getident(9,s)>0) {
		
	if (strcmp(s,a1)==0) 
				counters[1]++;
    if (strcmp(s,a2)==0) 
				counters[5]++;

		for (n=0;n<32;n++)
			if (strcmp(s,keywords[n])==0) {
				counters[n]++;
		}	
       for (i=0;i<9;i++) s[i]='\0';
	}
  
	for (i=0; i<32;i++){
		if (counters[i]>0) {
		    for (j=0;keywords[i][j]!='\0';j++) 
				putchar(keywords[i][j]);
		putchar(':');
		printf("%d\n",counters[i]);
		}
	}

	return 0;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -