Начну с очевидного: уже есть библиотечная функция, которая может преобразовывать строку, содержащую число в любом основании от (я полагаю) 2 до 36:
printf("%ld\n", strtol("1A", NULL, 20));
// Output: 30
Если, однако, в рамках выполнения задания или домашнего задания использование этой и аналогичных библиотечных функций запрещено, я не буду выполнять за вас домашнее задание, но вместо этого я дам вам описание алгоритма высокого уровня для чтения целого числа в произвольной основе, N:
accumulator
в ноль. i
в 0
. accumulator
на N. str[i]
, и добавьте ее к accumulator
(ваша функция val
). i
. str[i]
равно '\0'
, верните accumulator
и выйдите. В противном случае перейдите к шагу 3. В Вашем vimrc создайте функцию, такую как это:
:function ToggleWrap()
: if (&wrap == 1)
: set nowrap
: else
: set wrap
: endif
:endfunction
Тогда отображают ключ (такой как F9) для вызывания этой функции, как так:
map <F9> :call ToggleWrap()<CR>
map! <F9> ^[:call ToggleWrap()<CR>
Каждый раз, когда Вы нажимаете F9, он должен переключить Ваше обертывание на и прочь.
:set nowrap
существует также linebreak
опция, которая управляет, повреждается ли обернутый текст на границах слова или нет.
Я думаю, что Вы хотите:
:set wrap!
Это переключит обертывание строки.
[еще 114] об использовании! (удар) для изменения команд может быть найден в:
:help :_!