У меня проблема с strncpy()
копированием дополнительного символа на нужную мне длину. Мне нужно скопировать 10 самых значимых битов из одной строки в другую (обе в формате char*
).
Размер большей переменной не имеет значения, и меньшая влияет только на результат, когда он значительно меньше нужного мне значения (я не знаю, почему это тоже).
Значение n в моем strncpy()
может быть причиной проблемы, но я понятия не имею, почему она действует так, как есть. Если я не ошибаюсь, n, длина строки назначения, должна быть на 1 больше, чем данные, чтобы учесть нулевой символ в конце.
Моя строка не ведет себя таким образом вообще. Устанавливая n
в 11
, я получаю следующий вывод:
00000111101100100100001110100000
00000111101
Я бы предположил, что он будет копировать только 10 символов с последним нулем. Увеличение n
дает те же результаты.
Уменьшение n до 10 раскрывает суть проблемы:
00000111101100100100001110100000
0000011110@
Я не знаю, почему он это сделал, но он продолжает делать это с уменьшением n, пока n
не станет намного меньше (около 8).
Это соответствующие строки моего кода:
char line[11], hexAddr[8], binAddr[33], lv1Index[11];
...
strncpy(lv1Index, binAddr, 10);
, где lv1Index
был не тронут до этого, и binAddr отображается (в данном выводе) непосредственно заранее.
Добавляемый символ всегда @
, поэтому я не верю, что это мусор из lv1Index
предварительной инициализации.