Я пытаюсь напечатать целые числа в консоли на C с несколькими ограничениями, наиболее значительным из которых является то, что я могу писать только отдельные символы для консоль следующим образом:Печать целых чисел в виде символов (без массивов/printf/etc ...)
void my_char(char ch)
}
write(1, &ch, 1);
}
Другие ограничения включают NO предопределенные методы (printf, log и т. д.). Нет рекурсии. Наконец, я НЕ могу создать массив.
До сих пор я придумал метод, который отлично печатает цифры ... назад.
int main()
{
int i = -345320;
my_int(i);
return 0;
}
void my_int(int x)
{
char *a;
int n;
if(x < 0)
{
x = x * -1;
my_char('-');
}
while(x)
{
n = x % 10;
a = (char*)&n;
my_char(*a + 48);
x /= 10;
}
}
Есть ли другие хорошие способы приблизиться к этому или я, по крайней мере, в правильном направлении? В идеале я хотел бы расширить это, чтобы напечатать целое число на любой базе, которую я предоставляю, но мне нужно начать здесь.
Я играл с итерацией указателя на каждый байт целого числа, но я не могу понять, как использовать эти значения символов для воссоздания целого числа.
Любые советы приветствуются. Я бы скорее получил некоторое представление, чем просто решение для кода. Мне также понравился бы материал, чтобы сделать его более худым.
Попробуйте рекурсию и распечатайте цифры после рекурсивного шага. – ooga
Моя ошибка; Я также избегаю рекурсии. Обновлено, чтобы упомянуть об этом. – Elijah
Чтобы сделать его более компактным, вы можете избавиться от n и a и просто использовать эту строку в цикле while 'my_char (x% 10 + '0');'. – ooga