查看: 878|回复: 3
|
关于fscanf的问题
[复制链接]
|
|
假设问题是要求,在一个有50个分数的text file内算它的平均之类.
但是它付注text file内的分数可能少过50个.
那么,请问如果要知道一个text file内有多少个分数, 应该用什么condition?
我的概念是检察是不是 EOF, 但是失败了.....
如下:
void readData(FILE *fpOut,int list[])
{
int i;
int count=0;
for(i=0;i<50 && list !=EOF;i++)
{
fscanf(fpOut, "%d", &list);
count=count+1;
}
printf("counter:%d\n",count);
} |
|
|
|
|
|
|
|
发表于 29-3-2006 09:06 PM
|
显示全部楼层
/**********************************************************************8
FILE *fpt;
int total,number,count;
double Average;
fpt=fopen("number.txt","r");
total=0;
count=0;
while (fscanf(fpt,"%d",&number)!=EOF)
{
total+=number;
count++;
}
Average = total/count;
printf("Total number is %d\n", count);
printf("Average is %.2lf\n", Average);
fclose(fpt);
***************************************************************************/
这个是我自己做来read from file 和 算average 和 text file 里的 分数。。。
test 过了,。。 你是要这样的马? |
|
|
|
|
|
|
|
发表于 29-3-2006 09:21 PM
|
显示全部楼层
原帖由 cmw 于 29-3-2006 06:29 PM 发表
假设问题是要求,在一个有50个分数的text file内算它的平均之类.
但是它付注text file内的分数可能少过50个.
那么,请问如果要知道一个text file内有多少个分数, 应该用什么condition?
我的概念是检察是不是 ...
可以这样试下
#include <stdio.h>
#include <stdlib.h>
void readdata(FILE *fpout)
{
int i,count,total,tmpdata;
//i 是for loop用
//count是算都少个分数以算平均
//total是所有的分数总和
//tmpdata是存从text file内拿出的分数
if(fpout==NULL)
{
printf("ERROR");//防止file是空的
}
else
{
//总共loop 50次或者是fpout到达eof时推出for loop
for(i=1 , count=1 ; i<=50 || feof(fpout) ; i++)
{
fscanf(fpout, "%d", &tmpdata);
//把tmpdata内的分数加到total内
total+=tmpdata;
//把总共loop的次数,以确保少过50loop是依然可以average分数
count+=1;
}
//把average分数列印出来
printf("avg mark = %f",(double)total/count);
}
fclose(fpout);
}
____________
假设FILE *fpout从main()那里拿到file的名字
[ 本帖最后由 wing_s 于 29-3-2006 09:25 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 29-3-2006 10:53 PM
|
显示全部楼层
问题已经解决了,
多谢你们热心的帮忙.
=)
[ 本帖最后由 cmw 于 29-3-2006 11:22 PM 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|