Caro colega, Segue um pequeno exemplo, verifique se é o que está buscando. Boa Sorte elsd
#include <stdio.h>
#include <string.h>
int contar_digitos( int __numero )
{
int digitos;
int numero_dividido;
digitos = 0;
if( __numero < 0 )
__numero *= -1;
numero_dividido = __numero;
while( numero_dividido != 0 )
{
digitos ++;
numero_dividido /= 10;
}
return( digitos );
}
int somar_digitos( int __numero )
{
int soma;
int valor_digito;
int mascara;
int mascara2;
if( __numero < 0 )
__numero *= -1;
mascara2 = contar_digitos( __numero );
mascara = 1;
for( soma = 1; soma < mascara2; soma ++ )
mascara *= 10;
soma = 0;
mascara2 = 0;
while( mascara != 0 )
{
valor_digito = __numero / mascara;
soma += ( valor_digito - mascara2 );
mascara2 = valor_digito * 10;
mascara /= 10;
}
return( soma );
}
int main()
{
char numero[ 30 ];
printf( "Entre com um numero: " );
memset( numero, 0, sizeof( numero ) );
fgets( numero, 29, stdin );
numero[ strlen( numero ) - 1 ] = 0;
printf( "Digitos: [ %d ]\n", contar_digitos( atoi( numero ) ) );
printf( "Soma...: [ %d ]\n", somar_digitos( atoi( numero ) ) );
return( 0 );
}