9-2-41 P304 从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数

//[重要]9-2-41 P304 从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数。
//此种写法不熟悉

#include <stdio.h>
#include <string.h>
struct key{
    char word[10];
    int count;
}keyword[] = {"if",0,"char",0,"int",0,"else",0,"while",0,"return",0};
FILE *file;
char fname[20],buf[500];
int num;
char *getword(FILE *fp){
    int i=0;
    char c;
    while((c=fgetc(fp))!=EOF && (c==' ' || c=='\t' || c=='\n'));
    if(c == EOF) return(0);
    else buf[i++] = c;
    while((c=fgetc(fp))!=EOF && c!=' ' && c!='\t' && c!='\n'){
        buf[i++] = c;//将单词放入buf中
    }
    buf[i] = '\0';
    return(buf);
}

void lookup(char *p){
    int i;
    char *q,*s;
    for(i=0;i<num;i++){
        q = &keyword[i].word[0];
        s = p;
        while(*s && *s==*q){
            s++;
            q++;
        }
        if(*s==*q){
            keyword[i].count++;
            break;
        }
    }
    return;
}


void main(){
    int i;
    char *word;
    printf("输入文件名:\n");
    scanf("%s",fname);
    if((file=fopen(fname,"r"))==NULL){
        printf("文件打开错误\n");
        return;
    }
    num = sizeof(keyword) / sizeof(struct key);
    while((word = getword(file)) != NULL){
        lookup(word);
    }
    fclose(file);
    printf("统计结果如下:\n");
    for(i=0;i<num;i++){
        printf("keyword='%s',count=%d\n",keyword[i].word,keyword[i].count);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务