#include #include // returns the number of digits needed to write number n. // if the number is negative, the minus sign is NOT counted // as one of the digits. int count_digits(int n) { int result = 1; int temporary = n; if (n < 0) { temporary = -n; } while(1) { if (temporary < 10) { break; } temporary = temporary / 10; result++; } return result; } // if n has fewer digits than result_digits, // we add as many zeros to the right of n as needed // to make it have length result_digits. If n // already has result_digits or more digits, we // do not add any zeros. char * pad_number(int n, int result_digits) { int digits = count_digits(n); int number_of_zeros = 5 - digits; int result_length; if (number_of_zeros < 0) { number_of_zeros = 0; result_length = digits; } else { result_length = 5; } char * result = (char *) malloc(sizeof(char) * result_length + 1); int i; for (i = 0; i < number_of_zeros; i++) { result[i] = '0'; } int temporary = n; for (i = 0; i < digits; i++) { result[result_length - i - 1] = (temporary % 10) + 48; temporary = temporary / 10; } result[result_length] = 0; return result; } int main() { int number; printf("enter a number\n"); scanf("%d", &number); if (number < 0) { printf("cannot handle negative numbers, exiting...\n"); return 0; } int digits = count_digits(number); printf("%d contains %d digits\n", number, digits); char * result = pad_number(number, 5); printf("result = %s\n", result); free(result); }