C: строки Eclipse / gdb и Null Termination - PullRequest
1 голос
/ 27 февраля 2012

Как я могу узнать, заканчивается ли строка нулем в Eclipse и gdb? В разделе «Отладка для« По умолчанию », если я просто вижу текст, который хочу сохранить в кавычках, могу ли я предположить, что он завершается нулем? Кроме того, каков наилучший способ скопировать строку, чтобы убедиться, что она правильно завершена?

1 Ответ

1 голос
/ 27 февраля 2012

Используйте strncpy для безопасности, это позволяет вам указать максимальную длину на случай, если она не прервана.Это довольно сложно проверить, но да, если в отладчике он показывает правильно, то он корректно завершается.

Редактирование: Должно было дать понять, что это только делает его безопасным в том смысле, что вызов функции не произведетстранные результаты, если вы указываете длину, вы все равно должны вручную завершать строку.

В общем случае единственное время, когда оно не будет завершено нулем, связано с ошибкой программиста, так как я считаю, что все функции в библиотеке C возвращают правильнопрерванные строки, возможные ошибки могут быть забыть дополнительный байт для терминатора.Мне трудно думать о случаях, когда проблема со строками, с которой я столкнулся, была из-за сбойного нулевого терминатора, за исключением, возможно, пользовательских функций манипуляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...