Получение строки в языке C: функция getline
<p>Функцияgetline() в языке программирования C используется для чтения строки из стандартного ввода (stdin) или из файла. Синтаксис функции выглядит следующим образом:</p>
<pre><code class="hljs-c">#include <stdio.h>
char *getline(char *str, int size, FILE *stream);
</code></pre>
<p>Где:</p>
<ul>
<li>
str - указатель на массив символов, в который будет сохранена считанная строка.
</li>
<li>
size - максимальная длина строки, которую можно считать.
</li>
<li>
stream - указатель на структуру FILE, представляющую источник, из которого нужно считать строку.
</li>
</ul>
<p>Функция getline() читает символы из источника, пока не встретит символ новой строки ('\n') или не достигнет максимально допустимой длины строки. Полученная строка сохраняется в массиве символов, на который указывает параметр str, и завершается нулевым символом ('\0').</p>
<p>Рассмотрим пример использования функции getline():</p>
<pre><code class="hljs-c">#include <stdio.h>
int main() {
char str[100];
printf("Введите строку: ");
getline(str, sizeof(str), stdin);
printf("Вы ввели: %s", str);
return 0;
}
</code></pre>
<p>В данном примере мы объявляем массив символов str размером 100, в который будет сохранена введенная пользователем строка. Затем с помощью функции getline() мы считываем строку с клавиатуры с помощью стандартного потока ввода stdin. Затем с помощью функции printf() мы выводим на экран введенную строку.</p>
<p>Теперь давайте посмотрим, как можно использовать функцию getline() для чтения строк из файла. Допустим, у нас есть текстовый файл "input.txt" со следующим содержимым:</p>
<pre><code class="hljs-plaintext">Hello, world!
This is a test.
</code></pre>
<p>Мы можем модифицировать предыдущий пример следующим образом:</p>
<pre><code class="hljs-c">#include <stdio.h>
int main() {
FILE *file = fopen("input.txt", "r");
if (file != NULL) {
char str[100];
while (getline(str, sizeof(str), file) != NULL) {
printf("%s", str);
}
fclose(file);
} else {
printf("Не удалось открыть файл.");
}
return 0;
}
</code></pre>
<p>Здесь мы открываем файл "input.txt" в режиме только чтения с помощью функции fopen(). Если файл успешно открыт, мы входим в цикл while и повторяем считывание строк из файла с помощью функции getline() до тех пор, пока она не вернет указатель на ноль, указывая на конец файла. Каждая считанная строка выводится на экран с помощью функции printf(). В конце работы программы мы закрываем файл с помощью функции fclose().</p>
<p>Таким образом, функция getline() является полезным инструментом для чтения строк из стандартного ввода или из файлов в языке программирования C. Она позволяет считывать длинные строки без необходимости заранее задавать их размер, что упрощает и улучшает гибкость ввода пользовательских данных.</p>