2014-10-14 2 views
-6

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

int convertTime(int days, int *y, int *w, int *d){ 
    if (days < 0 || y == NULL || w == NULL || d == NULL){ 
    printf("An error has occured\n"); 
    return 1; 
    }else{ 
    *y = days/365; 
    *w = (days % 365)/7; 
    *d = ((days % 365)/7) % 7) 
    return 0; 
    } 
} 

и вот часть основной функции, где я ее называю.

// Tests convertTime 
    int days = 1000; 
    int y2 = 0, w2 = 0, d2 = 0; 
    int *y = NULL, *w = NULL, *d = NULL; 
    y = &y2, w = &w2, d = &d2; 
    convertTime(days, y, w, d); 
    printf("Expected output: 2 years, 38 weeks, 4 days\n"); 
    printf("Actual output: %d years, %d, weeks, %d days\n"); 

и печатает

Expected output: 2 years, 38 weeks, 4 days 
Actual output: -127184896 years, -132560896, weeks, -135499072 days 
+2

ваш компилятор должен предупредить вас о пропущенных 'Е()' аргументы, например, '' gcc', clang' сделать это по умолчанию. – jfs

ответ

3

Вы забыли передать свои переменные Printf. Зафиксировать последнюю строку:

printf("Actual output: %d years, %d, weeks, %d days\n", y2, w2, d2); 
-1

Как сказано в другом ответе вам нужно передать значения в printf.

Кроме того, необходимо проверить возвращаемое значение для convertTime

Смежные вопросы