请教一道C语言编程题
题目如下:1、单词统计【问题描述】统计某篇英文小说中某些单词的出现次数。【实现提示】英文小说存储在一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一...
题目如下:
1、单词统计
【问题描述】统计某篇英文小说中某些单词的出现次数。
【实现提示】英文小说存储在一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后全部完成。输出的每个单词的出现次数。约定小说中的词汇一律不跨行,这样每从文本文件中读入一行,就统计每个单词在这行中出现的次数,直到文件结束。
要求在程序运行时才输入文本文件名和要统计的词汇。
我的C语言代码是:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{ FILE *fp;
char ch,filename[10],word[20],a[10][20];
int count[10]={0},i,j;
printf("请输入文件名:");
scanf("%s",filename);
printf("请输入要搜索的单词\n");
i=0;
do{scanf("%s",a[i]);}
while(a[i++][0]!='0');
if((fp=fopen(filename,"r"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}
ch=fgetc(fp);
while(feof(fp)!=1)
{
while(ch!='\n')
{ i=0;
while(ch!=' ')
{
word[i]=ch;
ch=fgetc(fp);
i++;
}
word[i]='\0';
for(j=0;j<10&&a[j][0]!='0';j++)
if(strcmp(word,a[j])==0)
count[j]++;
ch=fgetc(fp);
}
for(i=0;i<10&&a[i][0]!='0';i++)
printf("%s出现的次数为%d\n",a[i],count[i]);
}
}
另外一个模拟小说的文本文件里没有什么问题,执行这个代码,输入文本文件名和要搜索的单词,加0表示结束语后,就提示出错了,编译没有问题,应该怎么改啊?求大神帮忙啊。。。答的好的加分! 展开
1、单词统计
【问题描述】统计某篇英文小说中某些单词的出现次数。
【实现提示】英文小说存储在一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后全部完成。输出的每个单词的出现次数。约定小说中的词汇一律不跨行,这样每从文本文件中读入一行,就统计每个单词在这行中出现的次数,直到文件结束。
要求在程序运行时才输入文本文件名和要统计的词汇。
我的C语言代码是:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{ FILE *fp;
char ch,filename[10],word[20],a[10][20];
int count[10]={0},i,j;
printf("请输入文件名:");
scanf("%s",filename);
printf("请输入要搜索的单词\n");
i=0;
do{scanf("%s",a[i]);}
while(a[i++][0]!='0');
if((fp=fopen(filename,"r"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}
ch=fgetc(fp);
while(feof(fp)!=1)
{
while(ch!='\n')
{ i=0;
while(ch!=' ')
{
word[i]=ch;
ch=fgetc(fp);
i++;
}
word[i]='\0';
for(j=0;j<10&&a[j][0]!='0';j++)
if(strcmp(word,a[j])==0)
count[j]++;
ch=fgetc(fp);
}
for(i=0;i<10&&a[i][0]!='0';i++)
printf("%s出现的次数为%d\n",a[i],count[i]);
}
}
另外一个模拟小说的文本文件里没有什么问题,执行这个代码,输入文本文件名和要搜索的单词,加0表示结束语后,就提示出错了,编译没有问题,应该怎么改啊?求大神帮忙啊。。。答的好的加分! 展开
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
FILE *fp;
char ch,filename[10],word[20],a[10][20];
int count[10]={0},i,j;
printf("请输入文件名:");
scanf("%s",filename);
printf("请输入要搜索的单词\n");
i=0;
do
{
scanf("%s",a[i]);
} while(a[i++][0]!='0');
printf("dir\n");
if((fp=fopen(filename,"r"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}
ch=fgetc(fp);
while(feof(fp)!=1&&ch!=EOF)
{
while(ch!=EOF)
{
i=0;
while(ch!=' '&&ch!=EOF)
{
word[i]=ch;
ch=fgetc(fp);
i++;
}
word[i]='\0';
for(j=0;j<10&&a[j][0]!='0';j++)
if(strcmp(word,a[j])==0)
count[j]++;
ch=fgetc(fp);
}
for(i=0;i<10&&a[i][0]!='0';i++)
printf("%s出现的次数为%d\n",a[i],count[i]);
}
fclose(fp);
}
修改了几处地方 你再试试^_^
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询