永发信息网

帮忙看一下C语言的问题~

答案:1  悬赏:30  手机版
解决时间 2021-07-17 05:28

#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再往下移??不懂
高手具体帮我分析下~

最佳答案
。。1个1个来。
1.while((c=getc(fp))!=EOF&&c==' '&&c=='\t'&&c=='n');。表示若获取的字符不是结尾符号或空格或

'\t'、'\n',那就继续读入。C=fget(fp)只是从fp中读入1个字符。。


2.keyword是一个结构体。word是这个结构体里的一个元素,并且是一个字符串。word[0]就是这个字符串的第一个字符。


3.它的功能就是字符后移。至于您的问题,我没看懂。。唉唉。理解能力有限啊。


4.sizeof()表示的是求()里面东西所占空间的大小。

keyword是一个结构体数组,而key是结构体。

除一下表示keyword里面有几个元素。。


。。


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么能qq空间皮肤啊? 我不是黄钻、想能个免
3000多块钱的笔记本什么样的好啊!
如何在不死族祭坛里加入兽族剑圣
美元与各国货币的兑换比例是多少啊· · 急!
y=2cos3x的周期什么
QQ空间背景音乐怎么添加不起来?
干性肌肤冬季怎样保养,补水或保湿.脸上的黑色
巡场教练什么时候考证,有哪些要求?
```不耍游戏会死人不???
CS单机可以招电脑人的
生日都这么过好?
谁会算着道题?
西南1怎么回事~~TX快答
都来猜谜语啦,
人不为己,天诛地灭。对吗?
推荐资讯
怎样当一名合格的控卫?
请问快乐大本营开场舞是蓝波老师教的那集是哪
怎样会获得快乐
是不是伤害之后就无法回到从前?
穿越火线我怎么进地图进不去呀??
我想要HEBE的独照 最好不是齐连 还有能当桌面
谁有海贼王540px*160px的图片?
12星座是看公历的还是农历?
电脑报0xc0000fd错怎么解决啊?
为什么我升级为拍拍2星用户了
这月七号来月经,到二十九号又来,请问有没有
飞利浦液晶电视42PFL3609接电脑可以达到1080P
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?