Считывание символов c getline
Функция getline() в языке программирования C является одной из основных функций для считывания строки из стандартного ввода. Она позволяет считать строку переменной длины, до тех пор, пока не будет встречен символ новой строки или достигнут предельный размер буфера.
Синтаксис функции getline() выглядит следующим образом:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
Давайте рассмотрим каждый из параметров функции подробнее:
-
lineptr: указатель на указатель, содержащий адрес буфера, в который будет записана считанная строка. Если значениеlineptrравноNULL, то функция выделяет память для буфера автоматически. -
n: указатель на переменную типаsize_t, содержащую размер выделенной памяти для буфера. Если значениеnравно 0, то функция автоматически выберет подходящий размер. После успешного выполнения, переменнаяnбудет содержать фактическое количество памяти, выделенное для буфера. -
stream: указатель на файловую переменнуюFILE, из которой будет считана строка. Часто используетсяstdinдля считывания строки из стандартного ввода.
Функция getline() возвращает количество считанных символов или -1, если произошла ошибка. Рассмотрим пример использования функции getline():
#include <stdio.h>
#include <stdlib.h>
int main() {
char *line = NULL; // указатель на строку
size_t len = 0; // длина строки
ssize_t read; // количество считанных символов
printf("Введите строку: ");
read = getline(&line, &len, stdin); // считываем строку с помощью getline()
if (read != -1) {
printf("Считано %zu символов:\n", read);
printf("Строка: %s", line);
} else {
printf("Ошибка при считывании строки.\n");
}
free(line); // освобождаем память, выделенную getline()
return 0;
}
В данном примере мы объявляем переменные line, которая будет содержать считанную строку, len, которая будет содержать размер выделенной памяти, и read, которая будет содержать количество считанных символов. Затем мы запрашиваем пользователя ввести строку и используем функцию getline() для ее считывания. Если считывание прошло успешно (возвращенное значение не является -1), мы выводим количество считанных символов и сами строку на экран.
Важно отметить, что функция getline() добавлена в стандарт C со спецификации C11 и может не поддерживаться на некоторых компиляторах или старых версиях языка C.