SegFault после сканирования? - PullRequest
2 голосов
/ 29 июня 2010
#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;
}

Почему возникает ошибка сегментации после сканирования?

Ответы [ 4 ]

6 голосов
/ 29 июня 2010

scanf требует, чтобы адреса переменных были переданы ему. Замените свой сканф на

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

Тебе должно быть хорошо идти.

4 голосов
/ 29 июня 2010

Вам нужно передать адрес этих переменных. Обязательно обратите особое внимание на сигнатуры функций, потому что вы можете получить очень странные результаты Также включите все предупреждения для вашего компилятора.

scanf("%d %d", &hour, &min); 
0 голосов
/ 29 июня 2010

Вы можете инициализировать свои переменные по их собственным адресам и "исправить" это:

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

(Кстати, я умница)

0 голосов
/ 29 июня 2010
scanf("%d %d", &hour, &min);
...