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 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示