Para terminar la serie de ejercicios sobre conversiones de números entre distintas bases veremos cómo convertir un número octal a decimal usando el lenguaje de programación C.
Es exactamente el mismo algoritmo que usamos para convertir hexadecimal a decimal; únicamente cambia la base (de 16 a 8, porque octal es base 8) y la obtención de la equivalencia.

Lecturas recomendadas
Decimal a binario, octal y hexadecimal en C
Convertir hexadecimal a decimal en C
Algoritmo para convertir octal a decimal en C
Como lo dije, es igual que convertir hexadecimal a decimal. Ahora en lugar de elevar el 16 a la potencia según la posición, vamos a elevar el número 8.
Por otro lado, ya no necesitamos hacer una conversión tan larga; pues en octal se usan los dígitos del 0 al 7, no hay letras y por lo tanto podemos aplicar el truco de convertir un char a su representación entera.
Recorremos la cadena de derecha a izquierda y por cada carácter multiplicamos su valor por el resultado de elevar 8 a una potencia. Primero la potencia es 0, luego es 1 y así sucesivamente conforme nuestra cadena sea más larga.
Función que convierte octal a decimal en C
Aquí está el código de la función. Recibe como argumentos la cadena que representa al número octal y la longitud de la misma; devuelve un unsigned long long representando el número decimal.
No vemos el 8 en ningún lado porque tenemos definida arriba la base con #define BASE 8
. Para la equivalencia simplemente restamos ‘0’ al valor; dándonos su representación entera.
Por cierto, recuerda que aquí puedes ver cómo elevar un número a una potencia en C.
Uso de la función y ejemplo de conversión
Para implementarla podemos hacer esto:
Recuerda que leemos con fgets para mayor seguridad. Para sacar la longitud de la cadena usamos strlen y lo demás ya está explicado.