Возможно вот так:
char *end;
long l = strtol (str, &end, base);
Передается адрес из end
, а не его значение, поэтому NULL
не передается.
Если endptr не равен NULL, указатель на символ, который остановил сканирование, сохраняется в месте, указанном endptr. Если преобразование не может быть выполнено (допустимые цифры не были найдены или была указана неверная база), значение strSource сохраняется в месте, указанном endptr.