Robot_PD 2015-12-02 02:17 采纳率: 50%
浏览 1491
已结题

程序输入3行数据运行正常,输入4行数据就运行不正常了,请大神解答?

本程序输入读入任意天数的浮点温度记录值,每天有6个记录,最后输入每天的平均值及每天的温度记录。请问,我输入3天的数据运行正常,为什么输入4天的数据运行就不正常了。多谢解答。
#define STDC_WANT_LIB_EXT1 1
#include
#include
#include
#include

#define BUF_LEN 100
#define READING_PER_DAY 6
#define INCR 1

int main(void)
{
char buf[BUF_LEN];
char *pstr=NULL;
char *ptr=NULL;
size_t day=0;
size_t capacity=0;
double **temperature=NULL;
double *result=NULL;
double average=0;

printf("Please enter 6 records of temperature for eachday.\n");
while(true)
{
    pstr=fgets(buf,BUF_LEN,stdin);
    if(!pstr)
    {
        printf("Error reading input.\n");
        return 1;
    }
    if(*pstr=='\n')
        break;
    if(day==capacity)
    {
        capacity+=INCR;
        temperature=realloc(temperature,capacity*sizeof(double*));
        result=realloc(result,capacity*sizeof(double));
    }
    *(temperature+day)=malloc(READING_PER_DAY*sizeof(double));
    for(size_t i=0;;++i)
    {
        temperature[day][i]=strtod(pstr,&ptr);
        if(pstr==ptr)
            break;
        else
            pstr=ptr;
        if(i>READING_PER_DAY)
        {
            printf("Please enter less than 6.\n");
            return 3;
        }
    }
    for(size_t j=0;j<READING_PER_DAY;++j)
    {
        result[day]+=temperature[day][j];
    }
    result[day]/=READING_PER_DAY;
    day++;
}
for(size_t k=0;k<day;++k)
{
    average+=result[k];
}
average/=day;
for(size_t k=0;k<day;++k)
{
    printf("Day %zd  %.1f  ",k+1,result[k]);
    for(size_t m=0;m<READING_PER_DAY;++m)
        printf("%-5.1f   ",temperature[k][m]);
    printf("\n");
    free(temperature[k]);
    temperature[k]=NULL;
}
free(result);
result=NULL;
free(temperature);
temperature=NULL;
printf("\n%.1f\n",average);
return 0;

}

  • 写回答

4条回答 默认 最新

  • zhaozhaoxia 2015-12-02 03:23
    关注

    *(temperature+day)=malloc(READING_PER_DAY*sizeof(double));
    开辟新的空间没有初始化。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料