CSDNLIHE 2016-06-10 04:45 采纳率: 0%
浏览 742

double数组的第一个值调用函数中和调用函数后不一样?

请教大家一个C语言问题 这是一个txt 内容:
0.992 1.029 1.074 1.120 1.008 1.018 0.974 0.980 0.982 0.957 0.862 0.975 1.049 1.047 1.038 0.959 1.011 1.017 1.007 0.963
我用fscanf方法读取成double类型的数组 并且在读取的函数中打印了一次 在函数中打印出来是正常的 但是一旦读取成功 数组的第一个值就变了 从0.992变成了0.4 为什么会出现这种情况呢?

在函数中打印出来是这样的:0.992 1.029 1.074 1.120......
读取完成后,打印出来是这样:0.400 1.029 1.074 1.120......

第一个数变化了。

这是读取的方法:
int readENSEMBLEtxt_to_doublearray(double a[])
{
//double v[20];//开一个足够大的数组。
int i = 0,j;
FILE *fpensem;//文件指针

fpensem = fopen(BGC_PATH, "r");//以文本方式打开文件。
if(fpensem == NULL) //打开文件出错。
    return -1;

//while(fscanf(fpensem, " %lf", &a[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
//  i++;
//fclose(fpensem);//关闭文件

while(!feof(fpensem)) {
    fscanf(fpensem,"%lf",&a[i]);
    ++i;
}

fclose(fpensem);//关闭文件

for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%lf ", a[j]);

}
printf("\r\n");
return 0;

}

下面是相关的调用过程:
double ensemble[20]={0};
readENSEMBLEtxt_to_doublearray(ensemble);

如果 我把这个函数和调用过程,从我原来的程序中,抽出来,结果是对的。但是在我的程序中,一模一样的内容,出来后第一个数字变化了,这里是在Visual Studio里面。BGC_PATH,是我定义的一个宏:#define BGC_PATH "F:\\Biome-BGC\\biomebgc-4.2\\biomebgc-4.2\\generateEnsemble.txt"。原来的程序是个比较大的生态模型。
  • 写回答

2条回答 默认 最新

  • devmiao 2016-06-10 05:11
    关注

    调试下是不是数组没有初始化或者越界了。

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退