Использование 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)
Другие вопросы по тегам