问答题

【说明】 以字符流形式读入一个文件,从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或’\t’、’\n’结束的字符串。其中6种关键字在程序中已经给出。 【程序】 #include <stdio.h> #include <stdlib.h> FILE *cp; char fname[20], buf[100]; int NUM; struct key { char word[10]; int count; }keyword[]={ "if", 0, "char", 0, "int", 0, "else", 0, "while", 0, "return", 0}; char *getword (FILE *fp) { int i=0; char c; while((c=getc(fp))!= EOF && (1) ); if(c==EOF) return (NULL); else buf[i++]=c; while((c=fgetc(fp))!=EOF && c!="&& c!=’\t’ && c!=’\n’ ) buf[i++]=c; buf[i]=’\0’; return(buf); } void lookup(char *p) { int i; char *q, *s; for(i=0; i<NUM; i++) { q= (2) ; s=p; while(*s && (*s==*q)) { (3) ) if( (4) ) { keyword[i].count++; break; } } return; } void main() { int i; char *word; printf("lnput file name:"); scanf("%s", fname); if((cp=fopen(fname, "r"))==NULL) { printf("File open error: %s\n", fname); exit(0); } NUM=sizeof(keyword)/sizeof(struct key); while( (5) ) lookup(word); fclose(cp); for(i=0;i<NUM;i++) printf("keyword:%-20s count=%d\n",keyword[i].word,keyword[i].count); }

【参考答案】

(1)(c==’ ’||c==’\t’||c==’\n’) (2)&keyword[i].word[0] (3) s++......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)