Передача значений <10, кажется, заставляет его работать. </p>
Для меня это звучит так, как будто у вас есть пропущенная / нерабочая процедура деления. printf / sprintf обычно печатает десятичные числа, последовательно разделяя их на 10. Для чисел меньше 10 деление не требуется, и, вероятно, поэтому оно не работает.
Для проверки создайте функцию, которая делит две переменные (деление на константу обычно оптимизируется для умножения компилятором). E.g.:
int t()
{
volatile int a, b; // use volatile to prevent compiler optimizations
a = 123;
b = 10;
return a/b;
};
Кроме того, проверьте журнал сборки на наличие предупреждений о ссылках.