atoi vs atol vs strtol vs strtoul vs sscanf

Estou tentando descobrir a partir de uma linha de comando que está sendo analisada, qual função seria melhor converter um número decimal, hexadecimal ou octal em umint o melhor - sem conhecer as informações de antemão.

O objetivo é usar uma única função que reconheça os diferentes tipos de entradas e atribuí-la ao seu número inteiro (int) que pode ser usado para:

./a.out 23 0xC4 070

poderia imprimir

23
196 /*hexadecimal*/
56  /*octal*/

O único problema que vejo é a análise para encontrar a diferença entre um número inteiro decimal e um octal.

Pergunta secundária: isso é estável para converter a string em um número inteiro para uso?

questionAnswers(2)

yourAnswerToTheQuestion