【发布时间】:2014-05-21 15:18:11
【问题描述】:
我需要读入一个包含文本的文件,然后读取该文本的双精度。只是为了得到这组数字的均值和标准差,所以前面的文字是无关紧要的。例如,我的输入文件看起来有点像:
preface 7.0000
chapter_1 9.0000
chapter_2 12.0000
chapter_3 10.0000
等等。
在这种情况下,它正在寻找一本书各章的均值和标准差。我有下面的代码部分,但我不太确定如何“忽略”文本,只抓取双打。目前这段代码打印出零,并且只有在超出数组限制时才退出循环,我在程序开始时将其设置为常量 20。
FILE *ifp;
char *mode = "r";
ifp = fopen("table.txt", mode);
double values[array_limit];
int i;
double sample;
if (ifp==NULL)
{
printf("cannot read file \n");
}
else
{
i = 0;
do
{
fscanf(ifp, "%lf", &sample);
if (!feof(ifp))
{
values[i] = sample;
printf("%.4lf \n", values[i]);
i++;
if (i>=array_limit) //prevents program from trying read past array size limit//
{
printf("No more space\n");
break;
}
}
else
{
printf("read complete\n");
printf("lines = %d\n", i);
}
}while (!feof(ifp));
fclose(ifp);
}
【问题讨论】: