扫描后的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;
(顺便说一句,我是个聪明人。)