Поскольку целая длина пользовательского ввода неизвестна, как мы можем напечатать все конечные нули?
Целая длина текста может быть известна . Используйте "%n"
для записи смещения сканирования до этой точки.
Чтобы численно перевернуть строку (очевидно, возможно простое текстовое обращение), запишите длину ввода.
При печати убедитесь, что начальные нули предварительно добавлены, если необходимо, используя "%0*u"
.
int main(void) {
int start, end;
unsigned n; // I prefer unsigned here, but could use int and %d below.
printf("Enter an integer: ");
fflush(stdout);
// v--- Consume leading white-space
if (scanf(" %n%u%n", &start, &n, &end) == 1) {
int length = end - start;
unsigned reversedNumber = 0;
for (int i = length; i > 0; i--) {
unsigned remainder = n % 10;
reversedNumber = reversedNumber * 10 + remainder;
n /= 10;
}
printf("Reversed Number = %0*u\n", length, reversedNumber);
}
return 0;
}
Пример прогона
Enter an integer: 00123000
Reversed Number = 00032100