#include <string.h>
int main(void)
{
int a = 0, b = 0, c = 0
char buf[128]
FILE *fp
/* 打开文件,文件名必须大写 */
fp= fopen("DATA5610.TXT", "r")
if (!fp) {
printf("No 'DATA5610.TXT' found.\n")
return -1
}
/* 逐次读取单词,空格或回车分割 */
while (fscanf(fp, "%s", buf) >0) {
/* 如读取到的单词是 if,则a自增 1 */
if (strcmp(buf, "if") == 0)
a++
else if (strcmp(buf, "while") == 0)
b++
else if (strcmp(buf, "for") == 0)
c++
}
printf("if: %d, while: %d, for: %d\n", a, b, c)
fclose(fp)
return 0
}
思路示意:char word[1000][20] ={0}//统计1000个单词,每个单词20字节长
int wordcount=0
int wordfreq[1000]= {0}//每个单词的词频
char line[1000]//每行最多1000个字母
int wordstart,wordend,ii
FILE *fp = fopen(文本文件)
while(!feof(fp))
{
scanf(fp,"%s",line)//读取一行
wordstart=0
for(wordend=wordstartwordstart<strlen(line) &&wordend<strlen(line)wordend++) //查找空格,切分单词
{
if (line[wordend]==' ')
{
line[wordend]=0x00
for(ii=0ii<wordcountii++) //查找单词是否在word队列中
{
if (!strcmp(word[ii], line[wordstart]) //单词已经存在
{
wordfreq[ii] ++
break
}
}
if (ii>=wordcount) //单词不存在
{
strcpy(word[wordcount], line[wordstart], strlen(line[wordstart])
wordcount++
}
wordstart = wordend + 1
}
}
if (wordstart<strlen(line)) //此行最后一个单词
{
line[wordend]=0x00
for(ii=0ii<wordcountii++) //查找单词是否在word队列中
{
if (!strcmp(word[ii], line[wordstart]) //单词已经存在
{
wordfreq[ii] ++
break
}
}
if (ii>=wordcount) //单词不存在
{
strcpy(word[wordcount], line[wordstart], strlen(line[wordstart])
wordcount++
}
wordstart = wordend + 1
}
}
}
fclose(fp)
//此时,word队列中保存了读取的所有单词,wordfreq队列中保存了相应的词频。
//使用排序算法进行排序(代码可以在网上搜)
for(ii=0ii<wordcountii++)
printf(" %s -> %d\n", word[ii], wordfreq[ii])
return 0
对w进行循环与字符串a比对比如"is"与a进行比对,找到a中所有有a地方然后判断该位置是否为一个单词是则在对应b中增加数字
如果代码不想自己写的话
我可以有偿代劳