#include <stdio.h>
#define TimeConverter 60
#define TempFormula time * time * 4 / time + 2 - 20
double HoursMinToTime(int hour, int min);
double Temperature(double time);
int main()
{
int hour, min;
double time, temperature;
printf("Hours and minutes: ");
scanf("%d %d", hour, min);
//Segfault HERE
time = HoursMinToTime(hour, min);
temperature = Temperature(time);
printf("After a %lf hour power failure, the frezer will be %lf degrees", time, temperature);
return 0;
}
double HoursMinToTime(int hour, int min)
{
double time = hour * min / TimeConverter;
return time;
}
double Temperature(double time)
{
double temp;
temp = TempFormula;
return temp;
}
为什么在scanf之后会出现分段错误?
答案 0 :(得分:6)
scanf 需要将变量的地址传递给它。用
替换你的scanfscanf("%d %d",&hour,&min);
你应该好好去。
答案 1 :(得分:4)
您需要传递这些变量的地址。请务必特别注意功能签名,因为最终会得到非常奇怪的结果。另外,为编译器打开所有警告。
scanf("%d %d", &hour, &min);
答案 2 :(得分:0)
scanf("%d %d", &hour, &min);
答案 3 :(得分:0)
您可以将变量初始化为自己的地址并“修复”:
int hour, min;
hour = (int)&hour;
min = (int)&min;
(我是一个聪明的屁股,顺便说一句。)