У меня есть массив из 16 байтов, который содержит имя сегмента исполняемого файла.Является ли законным передавать строку с нулевым завершением в strncmp в C?
char segname[16];
Если длина имени сегмента меньше 16 байт, то остальные заполняются нулевыми байтами. В противном случае не будет завершающий нулевой байт.
Я хочу сравнить segname
с различными строками, например. __text
.
Можно ли назвать strncmp
линией с нулевым завершением?
This post предполагает, что это является законным. This source code также делает его законным. Но страница моего человека говорит:
strncmp()
функция лексикографически сравнивает нулевые байтыs1
иs2
.
Размер, указанный в strncmp
будет размером segname
.
Мне интересно, на что я должен ссылаться.
Массив 'char', который не' '\ 0''-terminated, не является строкой! – Olaf
@Olaf В следующий раз я назову его «возможно, с нулевым завершением массива». – Bilow
Вы пропустили мою мысль! Строкового типа в C. Нет, вы должны рассмотреть возможность потратить лишний символ 'char' и всегда завершать массив. Это позволяет использовать другие строковые функции. Береженого Бог бережет! – Olaf