要求用C语言编一段程序,实现打开txt文件并显示内容,统计字符数、单词数、空白数和段落数的功能。

我运行程序后,只能实现打开文件和显示内容。求大神帮忙,万分感谢!
#include<stdlib.h>
#include<stdio.h>
void a(int n1)
{
char ch;
FILE *fp;
while((ch=fgetc(fp))!=EOF)
{
n1++;
}
printf("字符个数为:%d",n1);
}
void b(int n2)
{
char ch;
FILE *fp;
while((ch=fgetc(fp))!=EOF);
{
if((ch>'z')||((ch<'a')&&(ch>'Z'))||(ch<'A'))
n2++;
}
printf("单词个数为:%d",n2);
}
void c(int n3)
{
char ch;
FILE *fp;
while((ch=fgetc(fp))!=EOF);
{
if(ch==' ')
n3++;
}
printf("空白个数为:%d",n3);
}
void d(int n4)
{
char ch;
FILE *fp;
while((ch=fgetc(fp))!=EOF);
{
if(ch=='.'||ch=='!'||ch=='?')
{
ch=fgetc(fp);
if((ch=='\r')||(ch=='\n'))
n4++;
}
}
printf("段落数为:%d",n4);
}

void main()
{
FILE *fp;
char ch;
int n1=0;
int n2=0;
int n3=0;
int n4=0;
if((fp=fopen("D:\\file.txt","r"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
ch=getc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=getc(fp);
}
a(n1);
b(n2);
c(n3);
d(n4);
}

因为在主函数中 文件已经到结尾了
所以需要在每个函数中重新打开一次file才可以
即 在主函数中 a调用前 执行fclose
然后在a b c d中 每个都执行一次
fp=fopen("D:\\file.txt","r");追问

哦哦,谢了,我下午下了课回去试试

追答

有问题再追问

追问

十分感谢你,函数调用的问题已经解决了,但是除了统计字符数(也就是函数a)有用,其他三个功能都没有实现,求大神帮我再看看。

追答

空白个数看起来是对的
如果输出不对可能和你文件有关

换行个数 直接统计\n的个数应该就可以了

单词个数 需要做的更复杂一下 你可以搜一下统计单词的代码 网上有很多的

温馨提示:答案为网友推荐,仅供参考
相似回答