# 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

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 😉 