SegFault après scanf?

#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.)