Что такое разделитель в этой функции chomp?

#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, чтобы указать, где находится конец строки.