Qual é a diferença entre sscanf ou atoi para converter uma string em um número inteiro?

gcc 4.4.4 c89

O que é melhor para converter uma string em um valor inteiro.

Eu tentei 2 métodos diferentes atoi e sscanf. Ambos funcionam como esperado.

char digits[3] = "34";
int device_num = 0;

if(sscanf(digits, "%d", &device_num) == EOF) {
    fprintf(stderr, "WARNING: Incorrect value for device\n");
    return FALSE;
}

ou usando atoi

device_num = atoi(digits);

Eu estava pensando que o sscanf seria melhor, pois você pode verificar se há erros. No entanto, atoi não faz nenhuma verificação.

questionAnswers(6)

yourAnswerToTheQuestion