Итак, я должен написать функцию, которая использует указатели для преобразования дней в годы, недели и дни. Вот функция.Почему я получаю эти случайные значения?
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
ваш компилятор должен предупредить вас о пропущенных 'Е()' аргументы, например, '' gcc', clang' сделать это по умолчанию. – jfs