Использование strtoul в C
В С, почему
strtoul(argv[1])
просто не работает? Похоже, что нужно больше параметров, но я не могу предотвратить, как долго будет длиться число.
Спасибо!
ps (argv[1] настроен правильно).
3 ответа
Потому что вы называете это с неправильным количеством аргументов. Пытаться
strtoul(argv[1], 0, 0);
Или, если вы хотите применить только base-10:
strtoul(argv[1], 0, 10);
Убедитесь, что вы включили <stdlib.h>
тоже!
Другие параметры не для "как долго будет число". Прочтите справочную страницу.
unsigned strtoul(char *s, char **endptr, int base);
endptr
должно быть либо NULL
или адрес char *
, Если это не NULL
функция устанавливает указатель так, чтобы он указывал на первый неиспользуемый символ в строке, поэтому он не является цифрой или имеет нулевое окончание.
base
указывает, в какой базе находится число. Оно может быть между 2 и 52 (я полагаю). Вы, вероятно, хотите 10. Как особый случай, база 0 проверяет префикс 0x
для шестнадцатеричной и 0
для восьмеричного (и ни одного для десятичного) и преобразует соответственно.
Попробуйте это (для десятичного значения):
strtoul(argv[1], NULL, 10)