Целочисленное деление округляется в меньшую сторону, поэтому, если ваш ответ меньше 1, вы получите 0.
Вы можете попробовать что-то вроде этого:
printf("%d\r", ((current*100)/total));
Однако вы всегда получите целое число.
Если вы преобразуете числитель в число с плавающей точкой, вы получите деление числа с плавающей запятой и правильный ответ.
printf("%f\r", ((float)current/total * 100));
Однако вы можете захотеть обрезать нули после, например, за 3 цифры додесятичные и 2 после вы можете использовать:
printf("%3.2f\r", ((float)current/total * 100));
Выезд:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/