### C program to find the number of digits in a number :

In this tutorial, we will learn how to find the total number of digits in an integer. For example, the number *123* contains *3* digits. We will learn two different ways to solve this problem. First one is by using a *while loop* and then secondly, by using a *recursive method*.

### Algorithm :

The main algorithm or process we are going to use is as below :

- For example, we are finding the number of digits in
*234*. - Suppose,
*count*holds the total number of digits. In the beginning,*count = 0*. - Divide 234 by 10 .
*234/10 = 23*. Increment count ->*count = 1* - Divide 23 by 10 .
*23/10 = 2*. Increment count ->*count = 2* - Divide 2 by 10 .
*2/10 = 0*. Increment count ->*count = 3* - Since last result was
*0*, final result is*3*.

### Find the number of digits using a while loop :

Following C program will find the total number of digits using one *while loop* :

```
#include<stdio.h>
int main(){
//1
int no;
int totalDigits = 0;
//2
printf("Enter a number : ");
scanf("%d",&no);
//3
while(no!=0){
//4
no = no/10;
totalDigits ++;
}
//5
printf("Total digits in the number is %d\n",totalDigits);
}
```

### Explanation :

*The commented numbers in the above program denote the step number below :*

- Create one variable
*no*to store the number and one variable*totalDigits*to store the count of digits in the number. - Ask the user to enter a number. Read and save it in variable
*no*. - Run one
*while loop*. This loop will run continuously till the number becomes*0*. - Inside the loop, divide the
*no*by*10*and set this value to*no*itself. Increment the*totalDigits*by one. - After the loop is completed,
*totalDigits*should hold the total count of digits. Print it out.

### Using recursive method :

In this program, we will use the same approach as above. Only difference is that instead of a while loop, one method will call itself again and again.

```
#include<stdio.h>
//2
int findTotalDigits(int no){
//3
if(no == 0){
return 0;
}
//4
return 1 + findTotalDigits(no/10);
}
int main(){
int no;
int totalDigits = 0;
printf("Enter a number : ");
scanf("%d",&no);
//1
totalDigits = findTotalDigits(no);
printf("Total digits in the number is %d\n",totalDigits);
}
```

### Explanation :

- In this program,
*findTotalDigits()*function is used to fing the total count. It returns the total count and we are storing it in*totalDigits*variable. *findTotalDigits()*takes one integer as input and return one integer (total count).- If the provided number is
*0*, return*1*. - Else return
*1 + findTotalDigits(no/10)*, i.e. call the same method again. - For number
*123*, it will return*1 + findTotalDigits(12)*. *findTotalDigits(12)*will return*1 + findTotalDigits(1)*.*findTotalDigits(1)*will return*1 + findTotalDigits(0)*.*findTotalDigits(0)*will return*0*( as mentioned on step 3). So, finally it will rreturn*1 + 1 + 1 = 3*for*123*.

### Sample Outputs :

```
Enter a number : 123
Total digits in the number is 3
Enter a number : 1234567
Total digits in the number is 7
Enter a number : 889383
Total digits in the number is 6
```

You might also like :

- C program to find if two numbers are Amicable or not
- C program to swap two numbers using bitwise XOR operation
- C program to find the sum of first n odd numbers starting from 1
- C program to print a square table of a number using pow()
- C program to calculate the sum of positive/negative numbers in an array
- C program to ask the user to select a number within a range