C 为什么';当从文件中读取数据时,我的函数是否存储了我想要的值?
我正在编写一个函数,它从包含15个系列的文件中读取数据。每个系列以值0.0结束<代码>系列[]。totnr统计每个系列中的值的数量,C 为什么';当从文件中读取数据时,我的函数是否存储了我想要的值?,c,file,C,File,我正在编写一个函数,它从包含15个系列的文件中读取数据。每个系列以值0.0结束系列[]。totnr统计每个系列中的值的数量,系列[]。outnr统计220以上或以下5%的值的数量,系列[]。平均值存储系列中所有值的平均值 然而,当我调试函数时,我看到series[0]的值{totnr=-858993360 outnr=-858993459 average=-107374176.} 系列[1]等都有类似的值。我真的需要帮助,因为我不明白为什么会发生这种情况 在函数正在读取的文本文件的内容中: in
系列[]。outnr
统计220以上或以下5%的值的数量,系列[]。平均值
存储系列中所有值的平均值
然而,当我调试函数时,我看到
series[0]
的值{totnr=-858993360 outnr=-858993459 average=-107374176.}
系列[1]
等都有类似的值。我真的需要帮助,因为我不明白为什么会发生这种情况
在函数正在读取的文本文件的内容中:
int-read_数据(文件*tsin,结构系列Post系列[])
{
int i=0;
浮动总数=0,数字=0;
i=0;
while(fscanf(tsin、%f、&number)!=EOF)
{
总数=0;
做{
fscanf(tsin、%f、&number);
总数=总数+数量;
系列[i].totnr=系列[i].totnr+1;
如果(编号>231 | |编号<209)
{
系列[i].outnr++;
}
}而(数字!=0.0);
i++;
系列[i]。平均值=(总数)/(系列[i]。总计);
}
返回i;
}
“但是,当我调试函数时,我看到序列[0]的值为{totnr=-858993360 outnr=-858993459 average=-107374176.}”您需要使所有数组都以0开头。请显示a。读取每个数字时,必须检查fscanf
是否返回1。还有唐;在调用此函数之前,请不要忘记将数组归零。为什么不使用Visual Studio调试器?while(tal!=0.0)
-tal分配到哪里?请显示系列的定义。什么是serier
?@paul ogilvie和@n-m根据OP的名称,我猜这段代码最初是用丹麦语、挪威语或瑞典语变量名编写的,然后他在发布前将其翻译成英语。除了他忘了一行把tal
翻译成number
,忘了两行把serier
翻译成series
。
int read_data(FILE *tsin, struct seriespost series[])
{
int i = 0;
float total = 0, number = 0;
i = 0;
while (fscanf(tsin, "%f", &number) != EOF)
{
total = 0;
do {
fscanf(tsin, "%f", &number);
total = total + number;
series[i].totnr = series[i].totnr + 1;
if (number > 231 || number < 209)
{
series[i].outnr++;
}
} while (number != 0.0);
i++;
series[i].average = (total) / (series[i].totnr);
}
return i;
}