C program to count number of digits in an integer

Write a C program to input a number from user and count number of digits in the given integer using loop. How to find total digits in a given integer using loop in C programming. Logic to count digits in a given integer without using loop in C program.

Example

Input

Input num: 35419

Output

Number of digits: 5

Required knowledge

Basic C programming, While loop

There are various approaches to count number of digits in a given integer. Here, I will explain two logic to count number of digits, using loop and without using loop.

Logic to count number of digits in an integer

First logic is the easiest and is the common to think. It uses loop to count number of digits. To count number of digits divide the given number by 10 till number is greater than 0. For each iteration increment the value of some count variable.

Step by step descriptive logic to count number of digits in given integer using loop.

  1. Input a number from user. Store it in some variable say num.
  2. Initialize another variable to store total digits say digit = 0.
  3. If num > 0 then increment count by 1 i.e. count++.
  4. Divide num by 10 to remove last digit of the given number i.e. num = num / 10.
  5. Repeat step 3 to 4 till num > 0 or num != 0.

Program to count total digits in a given integer using loop

/**
 * C program to count number of digits in an integer
 */

#include <stdio.h>

int main()
{
    long long num;
    int count = 0;

    /* Input number from user */
    printf("Enter any number: ");
    scanf("%lld", &num);

    /* Run loop till num is greater than 0 */
    do
    {
        /* Increment digit count */
        count++;

        /* Remove last digit of 'num' */
        num /= 10;
    } while(num != 0);

    printf("Total digits: %d", count);

    return 0;
}

Logic to count number of digits without using loop

The second logic uses logarithms to count number of digits in a given integer.

Total number of digit in a given integer is equal to log10(num) + 1. Where log10() is a predefined function present in math.h header file. It returns logarithm of parameter passed to the base 10. However, you can use it to count total digits using formula log10(num) + 1.

Program to count number of digits without using loop

/**
 * C program to count number of digits in an integer without loop
 */

#include <stdio.h>
#include <math.h> /* Used for log10() */

int main()
{
    long long num;
    int count = 0;

    /* Input number from user */
    printf("Enter any number: ");
    scanf("%lld", &num);

    /* Calculate total digits */
    count = (num == 0) ? 1  : (log10(num) + 1);

    printf("Total digits: %d", count);

    return 0;
}

Note: In the above programs I have used long long data type with %lld format specifier. You can use long type with %ld format specifier if long long is not supported by your compiler.

 

Output

 
 
 
Enter any number: 123456789
Total digits: 9

Happy coding 😉