#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&&c==' '&&c=='\t'&&c=='n');
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=&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("input 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((word=getword(cp))!=NULL)
lookup(word);
fclose(cp);
for(i=o;i<NUM;i++)
printf("keyword:%-20s count=%d\n",keyword[i].word,keyword[i].count);
}
题目是:以字符流的形式读入一个文件,从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数,本程序中的规定:单词是一个以空格或
'\t'、'\n'结束的字符串。
问题:1:这句话 while((c=getc(fp))!=EOF&&c==' '&&c=='\t'&&c=='n');
为什么不是C=fget(fp)?这句话到底说了个什么意思?
2:q=&keyword[i].word[0];为什么后面要加word[0]啊?
3:while(*s&&(*s=*q))
{
s++;
q++;
}说是把字符后面移动,我想问的I的值已经确定情况下,q再往下移??不懂
高手具体帮我分析下~