#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; }
Pourquoi cela a-t-il un défaut de segmentation après scanf?
scanf nécessite que les adresses des variables lui soient transmises. Remplacez votre scanf par
scanf("%d %d",&hour,&min);
Vous devriez être prêt à partir.
Vous devez passer l’adresse de ces variables. Assurez-vous de porter une attention particulière aux signatures de fonction car vous risquez d’obtenir des résultats très étranges. Activez également tous les avertissements pour votre compilateur.
scanf("%d %d", &hour, &min);
scanf("%d %d", &hour, &min);
Vous pouvez initialiser vos variables à leurs propres adresses et “réparer” ceci:
int hour, min; hour = (int)&hour; min = (int)&min;
(Je suis un âne intelligent, d’ailleurs.)