Возможно, самое простое решение использует одну из моих любимых малоизвестных функций, strcspn()
:
buffer[strcspn(buffer, "\n")] = 0;
Если вы хотите, чтобы она также обрабатывала '\r'
(скажем, , если поток двоичный):
buffer[strcspn(buffer, "\r\n")] = 0; // works for LF, CR, CRLF, LFCR, ...
Функция подсчитывает количество символов до тех пор, пока оно не достигнет '\r'
или '\n'
(другими словами, он найдет первый '\r'
или '\n'
). Если он ничего не ударил, он останавливается на '\0'
(возвращает длину строки).
Обратите внимание, что это отлично работает, даже если нет новой строки, поскольку strcspn
останавливается на '\0'
. В этом случае вся строка просто заменяет '\0'
на '\0'
.