关于打开文件并计算文档中字符的信息熵的代码程序。
这个编译的时候没有错误,但是运行的时候总是说打开文件失败。麻烦,大侠们帮忙看看是哪里出了问题?在此感激不尽。。。。。。。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAXN 65575
int main()
{
int p[26]={0};
int N[26]={0};
double tem=0.0,H=0.0;
int sum=0;
int m,n,x,y;
char b[MAXN],ch;
int i;
//FILE *fp;
//int ch;
FILE* fp;
char fname[50]; //用于存放文件名
printf("输入文件名:");
scanf("%s",fname);
fp=fopen(fname,"r");
if(fp==NULL) //如果失败了
{
printf("错误!");
exit(0); //中止程序
}
//fp=fopen("C:\Documents and Settings\Administrator\桌面\ENG.txt","r+");
//if(!fp)
//{
//printf("file cannot be opened");
//exit(1);
//}
while((ch=fgetc(fp))!=EOF)
{
b[i]=ch;
i++;
}
for(i=0;i<MAXN;i++)
{
for(m=65,n=97;m<91&&n<123;m++,n++)
{
if(b[i]==m||b[i]==n)
N[m-65]++;
break;
}
}
for( y=0;y<26;y++)
sum=sum+N[y];
for( x=0;x<26;x++)
{
p[x]=N[x]/sum;
tem= p[x]*log10(p[x]);
H=H+tem;
}
printf("%3d\n",sum);
printf("%3f\n",H);
fclose(fp); //关闭文件
return 0;
}