(uint8_t)(*argv[2])
argv[2]
- это char *
и в зависимости от того, как работает ваша программа, я предполагаю, что она должна содержать размер буфера. Поскольку это строка (char *), и вы хотите преобразовать ее в число, вам нужно использовать sscanf, чтобы получить это значение:
Пример использования:
size_t len;
sscanf(str, "%zu", &len);
Затем передайте len
в качестве второго аргумента вашей функции преобразования.
То, как вы это делаете, в настоящее время передает код ASCII для первого символа argv[2]
. Поэтому, если пользователь сказал, что размер "7"
, вы фактически передаете целое число 55
в функцию преобразования.
В качестве дополнительного примечания используйте size_t
для представления размера, а не uint8_t
.