返回到main的数组,编译但在运行时给出了lap2:malloc.c:2451:sYSMALLOc消息。我认为错误与minutes()和seconds()有关。非常感谢帮助。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define N 25
int *minutes(float);
float *seconds(float);
int main ()
{
int *m;
float speed,min,sec,*s;
printf("Enter minute and seconds\n");
scanf("%f %f:\n", &min, &sec);
speed = ((min * 60) + sec) / N;
m = minutes(speed);
s = seconds(speed);
printf("%p:%p\n",m,s);
free(m);
free(s);
return 0;
}
int *minutes(float l)
{
int i,*h;
h = calloc(N,sizeof(int));
if(!h){
printf("memory failure\n");
exit(1);
}
for(i=1;i<=N;i++)
h[i] = ((int) l * i) / 60;
return h;
}
float *seconds(float m)
{
int i;
float j,*k;
k = calloc(N,sizeof(float));
if(!k){
printf("memory failure\n");
exit(2);
}
for(i=1;i<=N;i++)
j = i * m;
k[i] = fmod(j,60.0);
return k;
}
答案 0 :(得分:0)
在seconds(float)
函数中
for(i=1;i<=N;i++)
j = i * m;
k[i] = fmod(j,60.0);
应该是
for (i = 1; i <= N; i++) {
j = i * m;
k[i] = fmod(j, 60.0);
}
至少,当我使用它时它似乎起作用......例如。
Enter minute and seconds
10 5 :
0xe1b010:0xe1b080