#c #string
#c #строка
Вопрос:
Я пытаюсь понять, что делает следующий код
void chomp (char* string, char delim) {
size_t len = strlen (string);
if (len == 0) return;
char* nlpos = string len - 1;
if (*nlpos == delim) *nlpos = '';
}
что такое разделитель?. Сохраняет ли четвертая строка в основном последний символ в строке?
Ответ №1:
Если последний символ строки соответствует delim, то этой позиции символов в строке (*nlpos) присваивается нулевой байт, который фактически завершает строку C на одну позицию ближе к началу строки.
Я думаю, что термин chomp стал популярным в Perl, который часто обрезал завершающий символ новой строки при построчной обработке.
Ответ №2:
Разделителем является символ новой строки. Затем длина строки подсчитывается, и тип устанавливается в length (size_t форматирует lenghth в определенный ISO тип, который представляет размер). Длина строки проверяется на нулевую (0) длину, а затем возвращается к вызывающей процедуре, если true
Ответ №3:
Этот код удалит разделитель в строке (может быть буфером) и поместит нулевой символ (
) в конце. Четвертая строка сохранит последний символ в строке и заменит его нулевым символом. Разделитель — это последовательность символов, используемая для указания границы в обычном тексте или области. Следовательно, он появится в конце. Символ NULL используется в символьных строках в стиле C, чтобы указать, где находится конец строки.