扫描后的SegFault?

#include  #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之后会出现分段错误?

scanf需要传递给它的变量的地址。 替换你的scanf

 scanf("%d %d",&hour,&min); 

你应该好好去。

您需要传递这些变量的地址。 确保特别注意function签名,因为最终会得到非常奇怪的结果。 此外,为您的编译器打开所有警告。

 scanf("%d %d", &hour, &min); 
 scanf("%d %d", &hour, &min); 

您可以将变量初始化为自己的地址并“修复”:

 int hour, min; hour = (int)&hour; min = (int)&min; 

(顺便说一句,我是个聪明人。)