Немного более громоздким способом, который избегает atoi
и друзей, является добавление нуля в качестве короткой из двух строк.Или, предполагая, что нет нулей с префиксом, просто сначала сравните длину (поскольку более короткие строки должны иметь меньшее значение), затем запустите лексикографическое сравнение:
int numerical_strcmp(const char* a, const char* b) {
return (strlen(a) != strlen(b)) ? ((strlen(a) > strlen(b)) ? 1 : -1) : strcmp(a, b);
}
Oh, и это требует, чтобы строки не-отрицательные числа.