Я написал следующую функцию. Эта функция получает адрес шестнадцатеричного значения, например. 0x4571 и вычисляет день, месяц и год из битовых позиций шестнадцатеричного значения.Лучший способ вернуть результат
void fat_dir_date(char *dateAr) {
const unsigned int MaskDayOfMonth = 0x1F; //0000000000011111
const unsigned int MaskMonthOfYear = 0x1E0; //0000000111100000
const unsigned int MaskYear = 0xFE00; //1111111000000000
unsigned int DayOfMonth = hex & MaskDayOfMonth; //AND Bit Operation
unsigned int MonthOfYear = hex & MaskMonthOfYear; //AND Bit Operation
MonthOfYear = MonthOfYear >> 5; //Bitshift to right position
unsigned int Year = hex & MaskYear; //AND Bit Operation
Year = Year >> 9; //Bitshift to right position
printf("%d.%d.%d", DayOfMonth, MonthOfYear, 1980+Year);
}
Расчет работает отлично. Я получаю правильные числа в целочисленном DayOfMonth, MonthOfYear и Year. Но вместо того, чтобы распечатывать их с помощью printf, я хочу вернуть значения функции звонящего. Лучше всего объединить в одном значении или строке.
Как наилучшим образом решить эту проблему в C?
вопросы ищет 'best' образом не подходят для SO –
Может быть, вы можете поместить их все в' struct ", который создается в куче и возвращает адрес этой' struct'. Просто мое мнение. – sps
У вас есть странное определение «отлично работает». Код даже не компилируется. –