| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:[求助]我的程序哪里错了
只看楼主 加入收藏
shenbingmeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-9-1
收藏
 问题点数:0 回复次数:6 
[求助]我的程序哪里错了
我想通过下面这个程序,实现从一个文本文件wenjian.txt中读取数据,并统计各个字符出现的概率,将结果保存在prob.txt中,各个字符是保存在string.txt中,如果可以的话,也可以将这两个数组一起保存在out.txt中。可是不知道为什么,一个是程序中数组定义不知道哪里出问题,二是程序中prob.txt中就是没有输出的内容,我也不知道是为什么?求助,请各位高手指导下:#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
# include<ctype.h>
#define N 43
int main( )
{
FILE *fp1,*fp2;
long i,count,sum=0;
char ch,m;
int num[N];
float prob[N];
char string[N]={'a','b','c','d','e','f','g','h','i',
'j','k','l','m','n','o','p','q','r','s','t','u','v',
'w','x','y','z',' ', '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0','<','>',',','.''@','#'};
if((fp1=fopen("d:\\string.txt","w"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
fwrite(string,sizeof(char),N,fp1);
if((fp2=fopen("d:\\wenjian.txt","r"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
for(i=0;i<N;i++)
{
count=0;
ch=string[i];
while((m=fgetc(fp2))!=EOF)
{
if(isascii(m))
{
if(m==ch)
count++;
}
}
num[i]=count;
}
for(i=0;i<N;i++)
sum+=num[i];
for(i=0;i<N;i++)
prob[i]=num[i]/sum/1.00f;
fclose(fp1);
fp1=fopen("d:\\prob.txt","a+");
fwrite(prob,sizeof(char),N,fp1);
}
搜索更多相关主题的帖子: 统计 文本文件 include count 
2006-09-01 11:06
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

char string[N+1]="abcdefghijklmnopqretuvwsyz 1234567890<>,.@#";

prob[i]=(float)num[i]/(float)sum;

if(m==ch) //fgetc(fp2)怎么不能和CH比较的?
count++;

[此贴子已经被作者于2006-9-1 15:03:45编辑过]

2006-09-01 14:17
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
# include<ctype.h>
#define N 43
int main()
{
FILE *fp1,*fp2;
long i,count,sum=0;
char ch,m;
int num[N]={0};
float prob[N];
char string[N+1]="abcdefghijklmnopqretuvwsyz 1234567890<>,.@#";
if((fp1=fopen("d:\\string.txt","w"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
fwrite(string,sizeof(char),N+1,fp1);
if((fp2=fopen("d:\\wenjian.txt","r"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}

while((m=fgetc(fp2))!=EOF)
{
for(i=0;i<N;i++)
{
ch=string[i];
if(isascii(m))
{
if(m==ch)
num[i]++;
}
}
}
for(i=0;i<N;i++)
sum+=num[i];
for(i=0;i<N;i++)
{
prob[i]=num[i]/(float)sum;
}
fclose(fp1);
fp1=fopen("d:\\prob.txt","w");
for(i=0;i<N;i++)
fprintf(fp1,"%f\n",prob[i]);
getch();
}
以后把程序写清楚些,程序的问题主要出在黑体那块,您再看下,应该很快就明白了。

[此贴子已经被作者于2006-9-1 14:54:19编辑过]


对不礼貌的女生收钱......
2006-09-01 14:51
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

for(i=0;i<N;i++)
{
count=0;
ch=string[i];
while((m=fgetc(fp2))!=EOF)
{
if(isascii(m))
{
if(m==ch) //这里应该可以比较一轮的啊,就是i=0这次,怎么不行的?
count++;
}
}
num[i]=count;
}

#include<stdio.h>
int main(){
FILE *fp2;
char m,ch='h';
fp2=fopen("d:\\wenjian.txt","r");

while((m=fgetc(fp2))!=EOF)
{ putchar(m);

if(m==ch) / /这里怎么不行的??
printf("%c\t",m);
}}

[此贴子已经被作者于2006-9-1 15:10:25编辑过]

2006-09-01 15:03
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

行的。为什么不行?
即输出的概率p(a)=1.0.


对不礼貌的女生收钱......
2006-09-01 15:10
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

#include<stdio.h>
int main(){
FILE *fp2;
char m,ch='h';
fp2=fopen("d:\\wenjian.txt","r");

while((m=fgetc(fp2))!=EOF)
{ putchar(m);

if(m==ch) / /这里怎么不行的??
printf("%c\t",m);//这个打印不出来的?
}}

2006-09-01 15:12
shenbingmeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-9-1
收藏
得分:0 

真是谢谢上面的几位高手,我明白了,非常感谢!

2006-09-01 15:18
快速回复:[求助]我的程序哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033108 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved